Ext.require([ 'Ext.tree.*', 'Ext.data.*', 'Ext.layout.container.HBox', 'Ext.window.MessageBox' ]);

Ext.define('reportTreeModel', {
	extend : 'Ext.data.Model',
	fields : [ {
		name : 'text'
	}, {
		name : 'q_is_title'
	}, {
		name : 'id'
	},
	// {name:'sql'},
	{
		name : 'table'
	}, {
		name : 'unit',
		type : 'int'
	}, {
		name : 'q_is_right'
	}, {
		name : 'q_is_page'
	}, {
		name : 'q_is_sum'
	}, {
		name : 'q_is_openrun'
	}, {
		name : 'q_is_button'
	}, {
		name : 'q_remark'
	}, {
		name : 'leaf'
	} ]
});

Ext.define('fieldTreeModel', {
	extend : 'Ext.data.Model',
	fields : [ {
		name : 'text'
	}, {
		name : 'code'
	}, {
		name : 'id'
	}, {
		name : 'field_type'
	},
	// {name:'field_level'},
	{
		name : 'data_type'
	}, {
		name : 'data_url'
	}, {
		name : 'data_url_field'
	}, {
		name : 'url_type'
	}, {
		name : 'is_show'
	}, {
		name : 'is_url_param'
	}, {
		name : 'is_sum'
	}, {
		name : 'is_newline'
	},
	// {name:'sort_index'},
	{
		name : 'field_length'
	}, {
		name : 'data_sort'
	}, {
		name : 'leaf'
	} ]
});
var reportStroe = new Ext.data.TreeStore({
	model : 'reportTreeModel',
	proxy : {
		type : 'ajax',
		actionMethods : 'POST',
		url : '/sys-report/getReportTree',
		reader : {
			type : 'json'
		}
	},
	root : {
		text : '全部',
		icon : '/report/image/sysbutton/regionleve1.png'
	},
	autoLoad : true
});

var fieldStore = new Ext.data.TreeStore({
	model : 'fieldTreeModel',
	proxy : {
		type : 'ajax',
		actionMethods : 'POST',
		url : '/sys-report/getFieldTree',
		reader : {
			type : 'json'
		}
	},
	autoLoad : true
});

function getPage(page) {
	var pageFlag = true;
	if ('0' == page) {
		pageFlag = false
	}
	return pageFlag;
}

function loadReport(code) {
	Ext.Ajax.request({
		method : 'POST',
		url : "/sys-report/getReportQueryData",
		params : {
			code : code,
			maintenance : true
		},
		async : false,
		success : function(response, options) {
			// // 获取返回的JSON，并根据gridid，获取表头配置信息
			var respText = Ext.util.JSON.decode(response.responseText);
			unit = respText.unit;
			is_page = respText.isPage;
			q_id = respText.qId;
			q_title = respText.qTitle;
			conditionList = eval(respText.conditionList);
			configColumns = eval(respText.fieldList);
			conditions = {};
			fields = {};
			fieldsTemp = {};
			conditionsTemp = {};
			// conditionConf(condition);

		},
		failure : function(response, options) {
			Ext.MessageBox.minWidth = 120;
			Ext.Msg.alert('提示', '获取报表配置信息失败！');
		}
	});
}

function conditionConf(condition) {
	var myPanel = Ext.ComponentQuery.query('form#condition')[0];
	myPanel.add({
		xtype : 'container',
		margin : '0 0 0 0',
		columnWidth : .99,
		layout : 'column',
		defaults : {
			margin : '4 4 4 10',
			columnWidth : .13,
			labelAlign : 'right',
			labelWidth : 90
		// 控件默认标签宽度
		},
		items : [ {
			xtype : 'button',
			name : 'sort',
			text : '<span class="button-font">条件排序</span>',
			baseCls : 'x-panel-button-new',
			tooltip : '条件排序',
			// menu:getAddMenu(),
			icon : '/report/image/sysbutton/sort.png',
			handler : function(btn, e) {
				Ext.create('Ext.window.Window', {
					title : '条件排序', // 窗口标题
					width : document.body.clientWidth * 0.3, // 窗口宽度
					height : document.body.clientHeight * 0.7, // 窗口高度
					layout : 'fit',
					maximizable : true,
					itemId : 'window_sort_info', // 窗口标识
					buttonAlign : 'right', // 按钮显示的位置
					modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
					closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是destroy，则会将window销毁。
					items : initWindow_sort_info(),
					buttons : [ {
						xtype : 'button',
						text : '确定',
						handler : function(self) {
							// self.up('window').close();
							var grid = DSYGrid.getGrid('sortGrid');
							var store = grid.getStore();
							var sortcondition = [];
							store.each(function(record) {
								sortcondition.push(record.getData());
							});
							conditionList = {};
							conditionList = sortcondition;
							self.up('window').close();
							var conditionPanel = Ext.ComponentQuery.query('form#condition')[0];
							conditionPanel.removeAll(true);
							conditionConf(conditionList);
						}
					}, {
						xtype : 'button',
						text : '关闭',
						handler : function(self) {
							self.up('window').close();
						}
					} ]
				}).show();
			}
		} ]
	});
	if (condition != null && condition.length > 0) {
		Ext.Array.forEach(condition, function(str) { // 单纯的遍历数组
			var code = str.C_CODE;
			var fieldtitle = str.C_TITLE;
			var tips = str.C_TIPS;
			var cid = str.C_ID;
			var isShow = str.IS_SHOW;
			if (!conditions[cid]) {
				conditions[cid] = str;
			} else {
				code = conditions[cid].C_CODE;
				fieldtitle = conditions[cid].C_TITLE;
				tips = conditions[cid].C_TIPS;
				isShow = conditions[cid].IS_SHOW;
			}
			var fieldLabel = '<span ondblclick="shanchu(\'' + code + '\',\'combobox\',\'' + cid + '\');">' + fieldtitle
					+ '</span>';
			if (isShow == 0) {
				fieldLabel = '<span class="no-show" ondblclick="shanchu(\'' + code + '\',\'combobox\',\'' + cid
						+ '\');">' + fieldtitle + '</span>';
			}
			myPanel.add({
				xtype : 'combobox',
				fieldLabel : fieldLabel,
				name : code,
				margin : '2 5 2 2',
				padding : '0 0 0 0',
				emptyText : tips,
				listeners : {
					render : function(self) {
						Ext.QuickTips.init();  
						Ext.QuickTips.register({  
							target : self.el,  
							text : '双击标题删除'
						});
						self.getEl().on('click', function(self) {
							if (timer1) {
								timer1 = false;
								task1 = new Ext.util.DelayedTask(function() {
									var rightConfig = Ext.ComponentQuery.query('panel#rightConfig')[0];
									rightConfig.removeAll(true);
									rightConfig.setTitle("查询条件配置");
									if (conditions[cid]) {
										rightConfig.add(initConditonConfig({
											c_id : cid,
											data : conditions[cid]
										}));
									} else {
										$.post("/sys-report/getConditonInfo", {
											c_id : cid,
										}, function(jsondata) {
											var data = jsondata[0];
											if (!data.C_CODE) {
												data = {
													C_ID : cid,
													C_FIELD_CODE : code,
													C_TITLE : fieldtitle,
													IS_SHOW : isShow
												};
											}
											rightConfig.add(initConditonConfig({
												c_id : cid,
												data : data
											}));
										}, "json");
									}
									timer1 = true;
								});
								task1.delay(300);
							}
						});
					}
				}
			});
		});
	}
}

function initWindow_sort_info() {
	var tbar = [ {
		xtype : 'button',
		text : '置顶',
		handler : function(btn) {
			var grid = DSYGrid.getGrid('sortGrid');
			var store = grid.getStore();
			var record = grid.getSelectionModel().getSelection()[0];
			var index = store.indexOf(record);
			if (index > 0) {
				store.removeAt(index);
				store.insertData(0, record);
				// grid.getView().select(record);
				// grid.getView().refresh();
				grid.getView().addRowCls(record, "x-grid-item-click-new");
				grid.getSelectionModel().selectRange(0, 0);

			}
		}
	}, {
		xtype : 'button',
		text : '置底',
		handler : function(btn) {
			var grid = DSYGrid.getGrid('sortGrid');
			var store = grid.getStore();
			var record = grid.getSelectionModel().getSelection()[0];
			var index = store.indexOf(record);
			if (index >= 0) {
				store.removeAt(index);
				store.insertData(store.getCount(), record);
				grid.getSelectionModel().selectRange(store.getCount() - 1, store.getCount() - 1);
				// grid.getView().select(record);
				grid.getView().refresh();
				grid.getView().addRowCls(record, "x-grid-item-click-new");

			}
		}
	}, {
		xtype : 'button',
		text : '上移',
		name : 'up',
		handler : function(btn) {
			var grid = DSYGrid.getGrid('sortGrid');
			var store = grid.getStore();
			var record = grid.getSelectionModel().getSelection()[0];
			var index = store.indexOf(record);
			if (index > 0) {
				store.removeAt(index);
				store.insertData(index - 1, record);
				grid.getSelectionModel().selectRange(index - 1, index - 1);
				// grid.getView().select(record);
				grid.getView().refresh();
				grid.getView().addRowCls(record, "x-grid-item-click-new");

			}
		}
	}, {
		xtype : 'button',
		text : '下移',
		name : 'down',
		disabled : false,
		handler : function(btn) {
			var grid = DSYGrid.getGrid('sortGrid');
			var store = grid.getStore();
			var record = grid.getSelectionModel().getSelection()[0];
			var index = store.indexOf(record);
			if (index < store.getCount() - 1 && index >= 0) {
				store.removeAt(index);
				store.insertData(index + 1, record);
				grid.getSelectionModel().selectRange(index + 1, index + 1);
				// grid.getView().select(record);
				grid.getView().refresh();// 刷新行号
				grid.getView().addRowCls(record, "x-grid-item-click-new");

			}
		}

	} ];
	var headerJson = [ {
		dataIndex : "C_CODE",
		type : "string",
		text : "控件编码",
		width : 150
	}, {
		dataIndex : "C_TITLE",
		type : "string",
		text : "控件名称",
		width : 150
	} ];
	var grid = DSYGrid.createGrid({
		itemId : 'sortGrid',
		headerConfig : {
			headerJson : headerJson,
			columnAutoWidth : false
		},
		checkBox : false,
		border : false,
		autoLoad : false,
		dockedItems : [ {
			xtype : 'toolbar',
			dock : 'right',
			items : tbar
		} ],
		height : '100%',
		flex : 1,
		data : conditionList,
		pageConfig : {
			enablePage : false
		}
	});
	return grid;
}

function initWindow_report_config(config) {
	return Ext.create('Ext.window.Window', {
		title : "报表配置", // 窗口标题
		width : document.body.clientWidth * 0.6, // 窗口宽度
		height : document.body.clientHeight * 0.75, // 窗口高度
		layout : 'fit',
		maximizable : true,
		name : 'window_report_config', // 窗口标识
		buttonAlign : 'right', // 按钮显示的位置
		modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
		closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是close，则会将window销毁。
		items : initWindow_report_config_contentForm(config),
		buttons : [ {
			text : '保存',
			name : 'save',
			handler : function(self) {
				self.setDisabled(true);
				var jbxxForm = Ext.ComponentQuery.query('form#jbxxForm' + config.xiugai)[0];
				if (jbxxForm.isValid()) {
					var formData = jbxxForm.getForm().getFieldValues();
					var qTable = formData.Q_TABLE;
					// var qSql = formData.Q_SQL;
					if (qTable == null || qTable == "") {
						Ext.MessageBox.alert('提示', '请填写表/视图或数据源sql!');
						self.setDisabled(false);
						return;
					}
					formData = $.extend({}, formData, jbxxForm.getValues());
					formData.PARENT_ID = config.parent_id;
					var url;
					if (config.edit) {
						url = '/sys-report/updatejbxxInfo';
					} else {
						url = '/sys-report/savejbxxInfo';
					}
					$.post(url, {
						detailForm : encode64(Ext.util.JSON.encode([ formData ]))
					}, function(data) {
						if (data.success) {
							Ext.toast({
								html : "保存成功！",
								closable : false,
								align : 't',
								slideInDuration : 400,
								minWidth : 400
							});
							var parameter = "";
							if (!config.edit) {
								q_id = data.qid;
							} else {
								parameter = data.condition
							}
							var rightConfig = Ext.ComponentQuery.query('panel#rightConfig')[0];
							rightConfig.removeAll(true);
							var table = Ext.ComponentQuery.query('textfield[name="Q_TABLE"]')[0].getValue();
							self.up('window').close();
							if (!config.edit) {
								if (table && table != null) {
									Ext.Ajax.request({
										method : 'POST',
										url : "/sys-report/saveConditionInfoByTable",
										params : {
											q_id : encode64(q_id),
											table : encode64(table)
										},
										async : false,
										success : function(response, options) {
											var manageTreePanel = Ext.ComponentQuery.query('treepanel#manageTree')[0];
											manageTreePanel.getStore().load({
												callback : function(records, operation, success) {
													var node = manageTreePanel.getStore().getNodeById(q_id);
													currentReport = node;
													manageTreePanel.getSelectionModel().select(node);
													treeSearch(Ext.ComponentQuery.query('treepanel#manageTree')[0],q_id);
													changeReport(node);
												}
											});
											// 刷新表格
											// DSYGrid.getGrid("tjpzGrid").getStore().loadPage();
										},
										failure : function(response, options) {
											Ext.MessageBox.minWidth = 120;
											Ext.Msg.alert('提示', '获取表字段信息失败！');
										}
									});
								}
							} else {
								var manageTreePanel = Ext.ComponentQuery.query('treepanel#manageTree')[0];
								manageTreePanel.getStore().load({
									callback : function(records, operation, success) {
										var node = manageTreePanel.getStore().getNodeById(q_id);
										// treeSearch(q_id);
										var table = node.get("table");
										var fieldTree = Ext.ComponentQuery.query('treepanel#fieldTree')[0];
										var fieldStore = fieldTree.getStore();
										fieldStore.getProxy().extraParams = {
											q_id : q_id
										};
										fieldStore.load();
										for ( var i = 0; i < parameter.length; i++) {
											var flag = false;
											for ( var j = conditionList.length; j >= 0; j--) {
												if (conditionList[j]) {
													if (conditionList[j].C_CODE == parameter[i]) {
														var flag = true;
													}
												}
											}
											if (!flag) {
												var cid = GUID.createGUID();
												conditionList.push({
													C_ID : cid,
													C_CODE : parameter[i],
													C_TITLE : parameter[i],
													IS_SHOW : 0
												});
												conditions[cid] = {
													C_ID : cid,
													C_CODE : parameter[i],
													C_TITLE : parameter[i],
													IS_SHOW : 0
												};
											}
										}
										var conditionPanel = Ext.ComponentQuery.query('form#condition')[0];
										conditionPanel.removeAll(true);
										conditionConf(conditionList);

										var rightConfig = Ext.ComponentQuery.query('panel#rightConfig')[0];
										rightConfig.removeAll(true);
										var id = node.get('id');
										var text = node.get('text');
										var q_is_title = node.get('q_is_title');
										var unit = node.get('unit');
										var q_is_right = node.get('q_is_right');
										var q_is_page = node.get('q_is_page');
										var q_is_sum = node.get('q_is_sum');
										var q_is_openrun = node.get('q_is_openrun');
										var q_is_button = node.get('q_is_button');
										var q_remark = node.get('q_remark');
										var q_note = node.get('q_note');
										var export_data_format = node.get('export_data_format');
										var right_level = node.get('right_level');
										var export_level = node.get('export_level');
										var data = {
											Q_ID : id,
											Q_TITLE : text,
											Q_IS_TITLE : q_is_title,
											Q_TABLE : table,
											MONEY_UNIT : unit,
											Q_IS_RIGHT : q_is_right,
											Q_IS_PAGE : q_is_page,
											Q_IS_SUM : q_is_sum,
											Q_IS_OPENRUN : q_is_openrun,
											Q_REMARK : q_remark,
											Q_NOTE : q_note,
											export_data_format : export_data_format,
											Q_IS_BUTTON : q_is_button,
											RIGHT_LEVEL : right_level,
											EXPORT_LEVEL : export_level
										};
										// queryList = data;
										rightConfig.setTitle("基本信息配置");
										rightConfig.add(initWindow_report_config_contentForm({
											edit : true,
											columnWidth : .99,
											data : data,
											saveFlag : true
										}));
										// changeReport(node);
									}
								});
							}
						} else {
							Ext.MessageBox.alert('提示', '保存失败!' + data.message);
							self.setDisabled(false);
						}
					}, 'JSON');
					}else{
					self.setDisabled(false);
				}
			}
		}, {
			text : '关闭',
			handler : function(btn) {
				btn.up('window').close();
			}
		} ]
	}).show();
}

function initWindow_report_config_contentForm(config) {
	// queryList saveFlag
	var columnWidth = .499;
	var tableColumnWidth = .68;
	var searchColumnWidth = .1;
	var searchMargin = '30 0 0 10';
	var editColumnWidth = .1;
	var editMargin = '30 0 0 10';
	var resourceColumnWidth = .12;
	var resourceMargin = '30 0 0 10';
	if (config.columnWidth) {
		columnWidth = config.columnWidth;
		tableColumnWidth = .99;
		resourceColumnWidth = .39;
		resourceMargin = '5 2 5 5';
		editColumnWidth = .3;
		editMargin = '5 2 5 0';
		searchColumnWidth = .3;
		searchMargin = '5 2 5 0';
	}
	var xiugai = "";
	if (config.xiugai) {
		xiugai = config.xiugai;
	}
	var form = Ext.create('Ext.form.Panel', {
		itemId : 'jbxxForm' + xiugai,
		width : '100%',
		height : '100%',
		layout : 'column',
		scrollable : true,
		defaults : {
			margin : '5 5 2 5',
			columnWidth : columnWidth,
			labelAlign : "right",
			// width: 315,
			labelWidth : 90
		// 控件默认标签宽度
		},
		defaultType : 'textfield',
		items : [ {
			fieldLabel : '<span class="required">✶</span>报表名',
			name : "Q_ID",
			allowBlank : false,
			editable : true,
			hidden : false,
			regex : /^[0-9a-zA-Z_]*$/,
			regexText : '只能输入数字字母下划线',
			maxLength : 32
		}, {
			fieldLabel : '<span class="required">✶</span>报表标题',
			name : "Q_TITLE",
			allowBlank : false,
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						var mainPanel = Ext.ComponentQuery.query('panel#condition')[0];
						mainPanel.setTitle(newValue);
						saveJbxxFormValues();
					}
				}
			}
		}, {
			xtype : "combobox",
			fieldLabel : '<span class="required">✶</span>显示标题',
			name : "Q_IS_TITLE",
			allowBlank : false,
			store : DebtEleStore(json_is_title),
			queryMode : 'local',
			editable : false,
			allowBlank : false,
			value : 1,
			displayField : 'name',
			valueField : 'id',
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						var mainPanel = Ext.ComponentQuery.query('panel#condition')[0];
						saveJbxxFormValues();
					}
				}
			}
		}, {
			xtype : 'textareafield',
			fieldLabel : '<span class="required">✶</span>数据集<image onmouseover="qTableTip()" src="/report/image/common/alarmTip.png" width="12px"  height="12px">',
			columnWidth : tableColumnWidth,
			name : "Q_TABLE",
			height : 90,
			allowBlank : false,
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveJbxxFormValues();
					}
				}
			}
		},{
			xtype : 'button',
			text : '数据资源',
			columnWidth : resourceColumnWidth,
			margin : resourceMargin,
			icon : '/report/image/sysbutton/search.png',
			handler : function(self) {
				resource();
			}
		}, {
			xtype : 'button',
			text : '编辑',
			columnWidth : editColumnWidth,
			margin : editMargin,
			icon : '/report/image/sysbutton/edit.png',
			handler : function(self) {
				var tableSql = "";
				var editSqlWindow = Ext.ComponentQuery.query('window[name="window_report_config"]')[0];
				if (editSqlWindow) {
					var windowForm = editSqlWindow.down('form#jbxxForm' + xiugai);
					tableSql = windowForm.down('textareafield[name="Q_TABLE"]').getValue();
				} else {
					tableSql = Ext.ComponentQuery.query('textfield[name="Q_TABLE"]')[0].getValue();
				}
				Ext.create('Ext.window.Window', {
					title : '数据集修改', // 窗口标题
					width : document.body.clientWidth * 0.7, // 窗口宽度
					height : document.body.clientHeight * 0.7, // 窗口高度
					layout : 'fit',
					maximizable : true,
					itemId : 'window_edit_table_sql', // 窗口标识
					buttonAlign : 'right', // 按钮显示的位置
					modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
					closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是destroy，则会将window销毁。
					items : [ {
						xtype : 'form',
						width : '100%',
						height : '100%',
						layout : 'column',
						autoScroll : true,
						defaults : {
							margin : '10 5 5 5',
							columnWidth : .99,
							labelAlign : "right",
							labelWidth : 100
						// 控件默认标签宽度
						},
						items : [ {
							xtype : 'textareafield',
							// fieldLabel: '<span class="required">✶</span>',
							height: '95%',
							name: 'EDIT_SQL',
							allowBlank: false,
							value: tableSql
						}]
					}],
					buttons: [{
						xtype: 'button',
						text: 'SQL编辑器',
						handler: function (self) {
							//获取表单数据
							var editSql = Ext.ComponentQuery.query('textareafield[name="EDIT_SQL"]')[0].getValue();
							editSql = editSql.toUpperCase();
							var count = getStrCount(editSql, "JOIN");
							if (count >= 2 || editSql.includes("case") || editSql.includes("CASE")) {
								Ext.MessageBox.alert("温馨提示", "不能正常解析SQL语句,请手动编辑");
								return;
							}
							if (!(editSql.includes("SELECT")) && editSql.length != 0) {
								Ext.MessageBox.alert("温馨提示", "单表名称不支持编辑");
								return;
							}
                            sqlEditWindow.show();
						}
					}, {
						xtype: 'button',
						text: '确定',
						handler: function (self) {
							var editSql = Ext.ComponentQuery.query('textareafield[name="EDIT_SQL"]')[0].getValue();
							var editSqlWindow = Ext.ComponentQuery.query('window[name="window_report_config"]')[0];
							if (editSqlWindow) {
								var windowForm = editSqlWindow.down('form#jbxxForm' + xiugai);
								windowForm.down('textareafield[name="Q_TABLE"]').setValue(editSql);
							} else {
								Ext.ComponentQuery.query('textareafield[name="Q_TABLE"]')[0].setValue(editSql);
							}
							arrayOrder=[];
							arrayGroup = [];
							comboxSwitchOrderBy=[];
							comboxSwitchGroupBy=[];
							self.up('window').close();
						}
					}, {
						xtype : 'button',
						text : '关闭',
						handler : function(self) {
							self.up('window').close();
						}
					} ]
				}).show();
			}
		}, {
			xtype : 'button',
			text : '预览',
			columnWidth : searchColumnWidth,
			margin : searchMargin,
			icon : '/report/image/sysbutton/search.png',
			handler : function(self) {
				// form.down('combobox[name="DIVISION"]')
				var window = Ext.ComponentQuery.query('window[name="window_report_config"]')[0];
				var table = "";
				var title = "";
				if (window) {
					var windowForm = window.down('form#jbxxForm' + xiugai);
					table = windowForm.down('textareafield[name="Q_TABLE"]').getValue();
					title = windowForm.down('textfield[name="Q_TITLE"]').getValue();
				} else {
					table = Ext.ComponentQuery.query('textareafield[name="Q_TABLE"]')[0].getValue();
					title = Ext.ComponentQuery.query('textfield[name="Q_TITLE"]')[0].getValue();
				}

				if (table == null || table == "") {
					Ext.MessageBox.alert('提示', '表/视图或数据源sql为空不可预览!');
					return;
				}
				if (table.toUpperCase().indexOf("SELECT") == -1) {
					table = "select * from " + table;
				}
				table = encode64(table);
				$.post('/sys-report/data-assist/execute', {
					RUNSQL : table
				}, function(data) {
					if (data.select) {
						var parameter = data.condition;
						if (parameter.length > 0) {
							Ext.create('Ext.window.Window', {
								title : '参数',
								width : document.body.clientWidth * 0.3, // 窗口宽度
								height : document.body.clientHeight * 0.5, // 窗口高度
								layout : 'fit',
								maximizable : true,
								itemId : 'window_table_condition_info', // 窗口标识
								buttonAlign : 'right', // 按钮显示的位置
								modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
								closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是destroy，则会将window销毁。
								items : initWindow_table_condition_info(parameter),
								buttons : [ {
									xtype : 'button',
									text : '确定',
									handler : function(self) {
										var form = self.up('window').down('form');
										var formData = form.getValues();
										self.up('window').close();
										$.post('/sys-report/data-assist/table-header', {
											runsql : table
										}, function(data) {
											if (data.header) {
												// 弹出弹出框
												Ext.create('Ext.window.Window', {
													title : title, // 窗口标题
													width : document.body.clientWidth * 0.8, // 窗口宽度
													height : document.body.clientHeight * 0.8, // 窗口高度
													layout : 'fit',
													maximizable : true,
													itemId : 'window_table_info', // 窗口标识
													buttonAlign : 'right', // 按钮显示的位置
													modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
													closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是destroy，则会将window销毁。
													items : initWindow_table_info(table, data.header, title, formData),
													buttons : [ {
														xtype : 'button',
														text : '关闭',
														handler : function(self) {
															self.up('window').close();
														}
													} ]
												}).show();
											}
										}, 'JSON');
									}
								}, {
									xtype : 'button',
									text : '取消',
									handler : function(self) {
										self.up('window').close();
									}
								} ]
							}).show();
						} else {
							$.post('/sys-report/data-assist/table-header', {
								runsql : table
							}, function(data) {
								if (data.header) {
									// 弹出弹出框
									Ext.create('Ext.window.Window', {
										title : title, // 窗口标题
										width : document.body.clientWidth * 0.8, // 窗口宽度
										height : document.body.clientHeight * 0.8, // 窗口高度
										layout : 'fit',
										maximizable : true,
										itemId : 'window_table_info', // 窗口标识
										buttonAlign : 'right', // 按钮显示的位置
										modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
										closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是destroy，则会将window销毁。
										items : initWindow_table_info(table, data.header, title),
										buttons : [ {
											xtype : 'button',
											text : '关闭',
											handler : function(self) {
												self.up('window').close();
											}
										} ]
									}).show();
								}
							}, 'JSON');
						}
					} else if (data.code == "20000") {
						Ext.MessageBox.alert('提示', '执行sql成功!');
					} else {
						Ext.MessageBox.alert('提示', data.msg);
					}

				}, 'JSON');
			}
		}, {
			xtype : "combobox",
			fieldLabel : '<span class="required">✶</span>金额单位',
			name : "MONEY_UNIT",
			store : DebtEleStore(json_unit),
			queryMode : 'local',
			editable : false,
			allowBlank : false,
			value : 1,
			displayField : 'name',
			valueField : 'id',
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveJbxxFormValues();
					}
				}
			}
		}, {
			xtype : "combobox",
			fieldLabel : '<span class="required">✶</span>权限过滤',
			name : "Q_IS_RIGHT",
			store : DebtEleStore(json_right_type),
			queryMode : 'local',
			editable : false,
			allowBlank : false,
			value : 0,
			displayField : 'name',
			valueField : 'id',
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveJbxxFormValues();
					}
				}
			}
		}, {
			xtype : "combobox",
			fieldLabel : '<span class="required">✶</span>数据分页',
			name : "Q_IS_PAGE",
			store : DebtEleStore(json_page),
			queryMode : 'local',
			editable : false,
			allowBlank : false,
			value : 1,
			displayField : 'name',
			valueField : 'id',
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveJbxxFormValues();
					}
				}
			}
		}, {
			xtype : "combobox",
			fieldLabel : '<span class="required">✶</span>数据合计行',
			name : "Q_IS_SUM",
			store : DebtEleStore(json_sum),
			queryMode : 'local',
			editable : false,
			allowBlank : false,
			value : 0,
			displayField : 'name',
			valueField : 'id',
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveJbxxFormValues();
					}
				}
			}
		}, {
			xtype : "combobox",
			fieldLabel : '<span class="required">✶</span>打开即查询',
			name : "Q_IS_OPENRUN",
			store : DebtEleStore(json_openrun),
			queryMode : 'local',
			editable : false,
			allowBlank : false,
			value : 0,
			displayField : 'name',
			valueField : 'id',
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveJbxxFormValues();
					}
				}
			}
		}, {
			xtype : "combobox",
			fieldLabel : '<span class="required">✶</span>常用按钮',
			name : "Q_IS_BUTTON",
			store : DebtEleStore(json_button),
			queryMode : 'local',
			editable : false,
			allowBlank : false,
			value : 1,
			displayField : 'name',
			valueField : 'id',
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveJbxxFormValues();
					}
				}
			}
		}, {
			xtype : "combobox",
			fieldLabel : '<span class="required">✶</span>权限级次',
			name : "RIGHT_LEVEL",
			store : DebtEleStore(json_right_level),
			queryMode : 'local',
			editable : false,
			allowBlank : false,
			value : 0,
			displayField : 'name',
			valueField : 'id',
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveJbxxFormValues();
					}
				}
			}
		}, {
			xtype : "combobox",
			fieldLabel : '<span class="required">✶</span>导出级次',
			name : "EXPORT_LEVEL",
			store : DebtEleStore(json_export_level),
			queryMode : 'local',
			editable : false,
			allowBlank : false,
			value : 1,
			displayField : 'name',
			valueField : 'id',
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveJbxxFormValues();
					}
				}
			}
		}, {
			xtype : "textfield",
			fieldLabel : '报表批注',
			name : "Q_NOTE",
			displayField : 'name',
			valueField : 'id'
		}, {
			xtype : "combobox",
			fieldLabel : '导出数据格式',
			name : "EXPORT_DATA_FORMAT",
			store : DebtEleStore(json_export_data_format),
			queryMode : 'local',
			editable : false,
			allowBlank : true,
			value : 0,
			displayField : 'name',
			valueField : 'id',
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveJbxxFormValues();
					}
				}
			}
		},{
			xtype : 'textareafield',
			fieldLabel : '报表说明',
			name : "Q_REMARK",
			columnWidth : tableColumnWidth,
			height : 70,
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveJbxxFormValues();
					}
				}
			}
		} ]
	});
	if (config.edit) {
		form.down('textfield[name="Q_ID"]').setEditable(false);
	}
	form.getForm().setValues(config.data);
	queryList = {};
	return form;
}

function initWindow_table_condition_info(parameter) {
	var conditionItems = [];
	for ( var i = 0; i < parameter.length; i++) {
		conditionItems.push({
			fieldLabel : parameter[i],
			name : parameter[i]
		});
	}
	var form = Ext.create('Ext.form.Panel', {
		width : '100%',
		height : '100%',
		itemId : 'initWindow_table_condition_info',
		layout : 'column',
		scrollable : true,
		defaultType : 'textfield',
		defaults : {
			margin : '4 10 0 4',
			columnWidth : .99,
			labelAlign : 'right',
			labelWidth : 90
		// 控件默认标签宽度
		},
		items : conditionItems
	});
	return form;
}

function initWindow_table_info(table, header, title, formData) {
	var dataGrid = DSYGrid.createGrid({
		itemId : 'tableInfo',
		headerConfig : {
			headerJson : header,
			columnAutoWidth : false
		},
		checkBox : false,
		border : false,
		autoLoad : false,
		width : '100%',
		flex : 8,
		dataUrl : '/sys-report/data-assist/ext-form/table-data',
		params : {
			runsql : table,
			detailForm : Ext.util.JSON.encode([ formData ])
		},
		pageConfig : {
			enablePage : true,
			pageSize : 20,
			inputItemWidth : 52,
			pageNum : true
		},
		isLocalStorage : false
	});
	var panel = Ext.create('Ext.panel.Panel', {
		width : '100%',
		height : '100%',
		scrollable : true,
		border : false,
		layout : 'fit',
		items : [ dataGrid ]
	});
	var startD = new Date();
	var grid = DSYGrid.getGrid('tableInfo');
	var store = grid.getStore();
	store.load({
		callback : function(records, operation, success) {
			var endD = new Date();
			var useD = (endD.getTime() - startD.getTime()) / 1000;
			useD = numberFormat(useD, 2, 1);
			var tablePanle = Ext.ComponentQuery.query('window#window_table_info')[0];
			// var title = tablePanle.getTitle();
			tablePanle.setTitle(title + "（查询耗时：" + useD + "秒）")
		}
	});
	return panel;
}

function fieldConf(colArray, needConfig, needMap) {
	showRecord = {};
	columns = new Array();
	if (colArray == null || colArray.length <= 0) {
		return;
	}
	var columnChildFlag = false;
	for ( var i = 0; i < colArray.length; i++) {
		// 列显示行号
		var col = colArray[i];
		columns[i] = configColumn(col, needConfig, needMap);
		if (col.columns && col.columns.length > 0) {
			columnChildFlag = true;
			childColumns(columns[i], col.columns, needConfig, needMap);
		}
	}
	if (columnChildFlag) {
		singleHeadFlag = false;
	} else {
		singleHeadFlag = true;
	}

	return columns;
}

function childColumns(rootColumn, childColumns, needConfig, needMap) {
	var child = new Array();
	for ( var i = 0; i < childColumns.length; i++) {
		child[i] = configColumn(childColumns[i], needConfig, needMap);
		if (childColumns[i].columns && childColumns[i].columns.length > 0) {
			arguments.callee(child[i], childColumns[i].columns, needConfig, needMap);
		}
	}
	rootColumn.columns = child;
}

function configColumn(col, needConfig, needMap) {
	var fieldTitle = col.FIELD_TITLE;
	if (fields[col.F_ID] && fields[col.F_ID].FIELD_TITLE) {
		fieldTitle = fields[col.F_ID].FIELD_TITLE;
	}
	var column = {
		header : fieldTitle,// 设置标题文字
		type : "string", // 设置列解析类型
		text : fieldTitle,// 设置标题文字
		dataIndex : col.F_ID,// 设置列字段
		itemId : col.F_ID,
		tooltip : '双击删除列<br>右击添加列',
		hidden : false
	};
	if (col.FIELD_LENGTH) {
		column.width = parseInt(col.FIELD_LENGTH) == 0 ? 100 : parseInt(col.FIELD_LENGTH);// 设置固定列宽;
	} else {
		column.width = 100;
	}

	column.style = '{text-align: center;}';
	if (col.FIELD_TITLE != col.FIELD_CODE) {
		showRecord[col.F_ID] = col.FIELD_CODE;
		if (fields[col.F_ID]) {
			showRecord[col.F_ID] = fields[col.F_ID].FIELD_CODE;
		}
	}
	var flag = true;
	if (needConfig) {
		for ( var key in fields) {
			var field = fields[key];
			// field.FIELD_TITLE
			if (col.FIELD_CODE && col.FIELD_CODE == field.FIELD_CODE) {
				fields[col.F_ID] = field;
				showRecord[col.F_ID] = field.FIELD_CODE;
				flag = false;
				break;
			}
			// 解决类名一样，字段不一样时候拖拽显示的字段会被第一个覆盖的问题
			if (col.FIELD_TITLE == field.FIELD_TITLE&&col.F_ID==key) {
				fields[col.F_ID] = field;
				showRecord[col.F_ID] = field.FIELD_CODE;
				flag = false;
				break;
			}

		}
	}
	if (needMap && flag) {
		fields[col.F_ID] = {
			FIELD_CODE : col.FIELD_CODE,
			FIELD_TITLE : col.FIELD_TITLE,
			FIELD_TYPE : col.FIELD_TYPE,
			DATA_URL : col.DATA_URL,
			DATA_URL_FIELD : col.DATA_URL_FIELD,
			URL_TYPE : col.URL_TYPE,
			IS_SHOW : col.IS_SHOW,
			IS_URL_PARAM : col.IS_URL_PARAM,
			IS_SUM : col.IS_SUM,
			IS_NEWLINE : col.IS_NEWLINE,
			FIELD_LENGTH : col.FIELD_LENGTH,
			DATA_SORT : col.DATA_SORT,
			FIELD_FORMAT : col.FIELD_FORMAT,
			IS_LOCK : col.IS_LOCK,
			IS_MERGE : col.IS_MERGE,
			PARENT_ID : col.PARENT_ID
		}
		showRecord[col.F_ID] = col.FIELD_CODE;
	}
	return column;
}

function initFieldConfig(config) {
	var form = Ext.create('Ext.form.Panel', {
		width : '100%',
		height : '100%',
		itemId : 'window_zdpz_contentForm',
		layout : 'column',
		defaultType : 'textfield',
		scrollable : true,
		defaults : {
			margin : '5 5 2 5',
			columnWidth : .99,
			labelAlign : "right",
			labelWidth : 110
		// 控件默认标签宽度
		},
		items : [ {
			xtype : 'combobox',
			fieldLabel : '数据列',
			name : 'FIELD_CODE',
			displayField : 'name',
			valueField : 'id',
			store : fieldCodeStore(q_id),
			editable : true,
			allowBlank : false,
			enableKeyEvents : true,
			hidden : config.isLeaf == '0' ? true : false,
			listeners : {
				select : function(combo, record, eOpts) {
					if (config.saveFlag) {
						fieldConfig(config.f_id);
					}
				},
				'expand' : function(self, eOpts) {
					self.getStore().load();
				},
				keyup : function(self, e, eOpts) {
					if (config.saveFlag) {
						fieldConfig(config.f_id);
					}
				}
			}
		}, {
			fieldLabel : '<span class="required">✶</span>数据列名称',
			name : 'FIELD_TITLE',
			allowBlank : false,
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (Ext.ComponentQuery.query('gridcolumn#' + config.f_id)[0]) {
						Ext.ComponentQuery.query('gridcolumn#' + config.f_id)[0].setText(newValue);
					}
					if (config.saveFlag) {
						saveFieldFormValues(config.f_id);
					}
				}
			}
		}, {
			xtype : 'combobox',
			fieldLabel : '<span class="required">✶</span>数据列类型',
			name : 'FIELD_TYPE',
			displayField : 'name',
			valueField : 'id',
			value : 'string',
			store : DebtEleStore(json_field_type),
			editable : false,
			allowBlank : false,
			hidden : config.isLeaf == '0' ? true : false,
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveFieldFormValues(config.f_id);
					}
					var isSum = Ext.ComponentQuery.query('combobox[name="IS_SUM"]')[0];
					if (config.isLeaf == '0') {
						if (isSum) {
							isSum.setValue('0');
							isSum.setHidden(true);
						}
					} else {
						var fieldFormat = Ext.ComponentQuery.query('textfield[name="FIELD_FORMAT"]')[0];
						if (newValue == "string" || newValue == "rstring") {
							if (isSum) {
								isSum.setValue('0');
								isSum.setHidden(true);
							}
							if (fieldFormat) {
								fieldFormat.setHidden(true);
							}
						} else {
							if (isSum) {
								isSum.setHidden(false);
							}
							if (newValue == "float" || newValue == "numberstr") {
								if (fieldFormat) {
									fieldFormat.setHidden(false);
								}
							} else {
								if (fieldFormat) {
									fieldFormat.setHidden(true);
								}
							}
						}
					}
				}
			}
		}, {
			fieldLabel : '格式表达式',
			name : 'FIELD_FORMAT',
			allowBlank : true,// 允许为空
			hidden : true,
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveFieldFormValues(config.f_id);
					}
				}
			}
		}, {
			fieldLabel : '超级链接',
			name : 'DATA_URL',
			allowBlank : true,// 允许为空
			hidden : config.isLeaf == '0' ? true : false,
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveFieldFormValues(config.f_id);
					}
				}
			}
		}, {
			xtype : 'combobox',
			fieldLabel : '超级链接数据列',
			name : 'DATA_URL_FIELD',
			displayField : 'text',
			valueField : 'id',
			store : Ext.ComponentQuery.query('treepanel#fieldTree')[0].getStore(),
			editable : false,
			allowBlank : true,// 允许为空
			hidden : config.isLeaf == '0' ? true : false,
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveFieldFormValues(config.f_id);
					}
				}
			}
		}, {
			xtype : 'combobox',
			fieldLabel : '链接打开方式',
			name : 'URL_TYPE',
			displayField : 'name',
			valueField : 'id',
			store : DebtEleStore(json_url_type),
			editable : false,
			allowBlank : true,// 允许为空
			hidden : config.isLeaf == '0' ? true : false,
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveFieldFormValues(config.f_id);
					}
				}
			}
		}, {
			xtype : 'combobox',
			fieldLabel : '<span class="required">✶</span>列是否可见',
			name : 'IS_SHOW',
			displayField : 'name',
			valueField : 'id',
			value : 1,
			store : DebtEleStore(json_show_type),
			editable : false,
			allowBlank : false,// 允许为空
			hidden : config.isLeaf == '0' ? true : false,
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveFieldFormValues(config.f_id);
					}
				}
			}
		}, {
			xtype : 'combobox',
			fieldLabel : '<span class="required">✶</span>是否超链接参数',
			name : 'IS_URL_PARAM',
			displayField : 'name',
			valueField : 'id',
			value : 0,
			store : DebtEleStore(json_url_param_type),
			editable : false,
			allowBlank : false,// 允许为空
			hidden : config.isLeaf == '0' ? true : false,
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveFieldFormValues(config.f_id);
					}
				}
			}
		}, {
			xtype : 'combobox',
			fieldLabel : '<span class="required">✶</span>是否汇总列',
			name : 'IS_SUM',
			displayField : 'name',
			valueField : 'id',
			value : 0,
			hidden : true,
			store : DebtEleStore(json_sum_type),
			editable : false,
			allowBlank : false,// 允许为空
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveFieldFormValues(config.f_id);
					}
				}
			}
		}, {
			xtype : 'combobox',
			fieldLabel : '<span class="required">✶</span>列是否自动换行',
			name : 'IS_NEWLINE',
			displayField : 'name',
			valueField : 'id',
			value : 0,
			store : DebtEleStore(json_newline_type),
			editable : false,
			allowBlank : false,// 允许为空
			hidden : config.isLeaf == '0' ? true : false,
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveFieldFormValues(config.f_id);
					}
				}
			}
		}, {
			xtype : 'numberfield',
			fieldLabel : '<span class="required">✶</span>列宽',
			name : 'FIELD_LENGTH',
			minValue : 1,
			allowBlank : false,// 允许为空
			hidden : config.isLeaf == '0' ? true : false,
			hideTrigger: true,
			keyNavEnabled: false,
			mouseWheelEnabled: false,
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					var reportGrid = DSYGrid.getGrid('reportGrid');
					var reportStroe = reportGrid.getStore();
					var columns = reportGrid.getColumns();
					for ( var i in columns) {
						var column = columns[i];
						if (column.dataIndex == config.f_id) {
							column.setWidth(newValue);
						}
					}
					if (config.saveFlag) {
						saveFieldFormValues(config.f_id);
					}
				}
			}
		}, {
			xtype : 'combobox',
			fieldLabel : '列排序方式',
			name : 'DATA_SORT',
			displayField : 'name',
			valueField : 'id',
			value : 0,
			store : DebtEleStore(json_data_sort),
			editable : false,
			allowBlank : true,// 允许为空
			hidden : config.isLeaf == '0' ? true : false,
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveFieldFormValues(config.f_id);
					}
				}
			}
		}, {
			xtype : 'combobox',
			fieldLabel : '是否锁定列',
			name : 'IS_LOCK',
			displayField : 'name',
			valueField : 'id',
			value : 0,
			store : DebtEleStore(json_is_lock),
			editable : false,
			allowBlank : true,// 允许为空
			hidden : (config.isLeaf == '0' || !isNull(config.data.PARENT_ID)) ? true : false,
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveFieldFormValues(config.f_id);
					}
				}
			}
		}, {
			xtype : 'combobox',
			fieldLabel : '是否合并单元格',
			name : 'IS_MERGE',
			displayField : 'name',
			valueField : 'id',
			value : 0,
			store : DebtEleStore(json_is_merge),
			editable : false,
			allowBlank : true,// 允许为空
			listeners : {
				change : function(self, newValue, oldValue, eOpts) {
					if (config.saveFlag) {
						saveFieldFormValues(config.f_id);
					}
				}
			}
		} ]
	});
	// 初始化及回显configColumns
	form.getForm().setValues(config.data);
	if (config.saveFlag) {
		var formValues = form.getForm().getValues();
		fields[config.f_id] = formValues;
		fieldsTemp[config.f_id] = formValues;
	} else {
		setTimeout(function() {
			config.saveFlag = true;
		}, 1000);
	}
	return form;
}

function saveFieldFormValues(f_id) {
	var form = Ext.ComponentQuery.query('form#window_zdpz_contentForm')[0];
	var formValues = form.getForm().getValues();
	fields[f_id] = formValues;
	fieldsTemp[f_id] = formValues;
	// 解决修改列字段之后，表格的configColumns没有同步更新，导致拖拽之后恢复成原来的字段
	configColumns.forEach(function(item,index){
        if(item.F_ID==f_id){
            item=Object.assign(item,formValues)
        }
    })
}

function fieldConfig(f_id) {
	var form = Ext.ComponentQuery.query('form#window_zdpz_contentForm')[0];
	var fieldCode = Ext.ComponentQuery.query('combobox[name="FIELD_CODE"]')[0].getValue();
	Ext.Ajax.request({
		method : 'POST',
		url : "/sys-report/getFieldConfigByCode",
		params : {
			fieldCode : fieldCode
		},
		async : false,
		success : function(response, options) {
			// 获取返回的JSON，并根据gridid，获取表头配置信息
			var respText = Ext.util.JSON.decode(response.responseText);
			if (respText.success) {
				var fieldCodeConfig = eval(respText.fieldList)[0];
				form.getForm().setValues(fieldCodeConfig);
			}
		},
		failure : function(response, options) {

		}
	});
	saveFieldFormValues(f_id);
	var reportGrid = DSYGrid.getGrid('reportGrid');
	var reportStroe = reportGrid.getStore();
	reportStroe.getAt(0).set(f_id, fieldCode);
}

function fieldCodeStore(q_id) {
	var store = new Ext.data.Store({
		autoLoad : true,
		fields : [ 'id', 'code', 'name' ],
		proxy : {
			type : 'ajax',
			url : '/sys-report/getFieldCodeStore',
			extraParams : {
				Q_ID : q_id
			},
			reader : {
				type : 'json',
				root : 'list'
			}
		}
	});
	return store;
}

function shanchu(name, controlType, cid) {
	if(task1){
		task1.cancel();
		timer1 = true;
	}
	var assembly = Ext.ComponentQuery.query('' + controlType + '[name="' + name + '"]')[0];
	assembly.destroy();
	var rightConfig = Ext.ComponentQuery.query('panel#rightConfig')[0];
	rightConfig.removeAll(true);
	Ext.Array.forEach(conditionList, function(str, index, conditionList) { // 单纯的遍历数组
		if (str) {
			if (str.C_ID == cid) {
				conditionList.splice(index, 1);
			}
		}
	});
	for ( var key in conditions) {
		if (key == cid) {
			delete conditions[key];
		}
	}

	for ( var key in conditionsTemp) {
		if (key == cid) {
			delete conditionsTemp[key];
		}
	}
}

function initConditonConfig(config) {
	var eleDataShow = (config.data.C_DISP_MODE == "treecombobox" || config.data.C_DISP_MODE == "combobox") ? true : false;
	var dataSourceShow = (config.data.IS_ELE_DATA == 1 && eleDataShow) ? true : false;
	var eleDataCode = (typeof config.data.ELE_CATALOG_CODE == 'undefined') ? '' : config.data.ELE_CATALOG_CODE;
	var form = new Ext.form.Panel(
			{
				width : '100%',
				height : '100%',
				itemId : 'window_tjpz_contentForm',
				layout : 'column',
				defaultType : 'textfield',
				scrollable : true,
				defaults : {
					margin : '5 5 2 5',
					columnWidth : .99,
					labelAlign : "right",
					labelWidth : 110
				// 控件默认标签宽度
				},
				items : [
						{
							xtype : 'combobox',
							fieldLabel : '<span class="required">✶</span>控件编码',
							name : 'C_CODE',
							displayField : 'name',
							valueField : 'id',
							store : conditionCodeStore(q_id),
							editable : true,
							allowBlank : false,
							enableKeyEvents : true,
							listeners : {
								'expand' : function(self, eOpts) {
									self.getStore().load();
								},
								select : function(combo, record, eOpts) {
									if (config.saveFlag) {
										conditionConfig(config.c_id);
									}
								},
								keyup : function(self, e, eOpts) {
									if (config.saveFlag) {
										saveConditionFormValues(config.c_id);
									}
								}
							}
						},
						{
							fieldLabel : '<span class="required">✶</span>控件名称',
							name : 'C_TITLE',
							allowBlank : false,
							listeners : {
								change : function(self, newValue, oldValue, eOpts) {
									var c_code = null;
									var SHOW_CODE = null;
									var isShow = 1;
									for ( var key in conditionList) {
										if (config.c_id == conditionList[key].C_ID) {
											c_code = conditionList[key].C_CODE;
											SHOW_CODE = conditionList[key].SHOW_CODE;
											isShow = conditionList[key].IS_SHOW;
										}
									}
									var name = c_code;
									var fieldLabel = '<span ondblclick="shanchu(\'' + name + '\',\'combobox\',\''
											+ config.c_id + '\');">' + newValue + '</span>';
									if (isShow == 0) {
										fieldLabel = '<span class="no-show" ondblclick="shanchu(\'' + name
												+ '\',\'combobox\',\'' + config.c_id + '\');">' + newValue + '</span>';
									}
									var assembly = Ext.ComponentQuery.query('combobox[name="' + name + '"]')[0];
									if (assembly) {
										assembly.setFieldLabel(fieldLabel);
									} else {
										name = SHOW_CODE;
										assembly = Ext.ComponentQuery.query('combobox[name="' + name + '"]')[0];
										if (assembly) {
											assembly.setFieldLabel(fieldLabel);
										}
									}
									if (config.saveFlag) {
										saveConditionFormValues(config.c_id);
									}
								}
							}
						},
						{
							xtype : 'combobox',
							fieldLabel : '查询列',
							name : 'C_FIELD_CODE',
							displayField : 'text',
							valueField : 'id',
							store : Ext.ComponentQuery.query('treepanel#fieldTree')[0].getStore(),
							editable : false,
							allowBlank : true,
							listeners : {
								change : function(self, newValue, oldValue, eOpts) {
									if (config.saveFlag) {
										saveConditionFormValues(config.c_id);
									}
								}
							}
						},
						{
							xtype : 'combobox',
							fieldLabel : '<span class="required">✶</span>控件类型',
							name : 'C_DISP_MODE',
							displayField : 'name',
							valueField : 'id',
							value : 'textfield',
							store : DebtEleStore(json_disp_mode_type),
							editable : false,
							allowBlank : false,
							listeners : {
								select : function(combo, record, index) {
									var modeValue = Ext.ComponentQuery.query('combobox[name="C_DISP_MODE"]')[0]
											.getValue();
									var queryRelation = Ext.ComponentQuery.query('combobox[name="QUERY_RELATION"]')[0];
									var isMul = Ext.ComponentQuery.query('combobox[name="IS_MUL"]')[0];
									var isLeaf = Ext.ComponentQuery.query('combobox[name="IS_LEAF"]')[0];
									var isRootShow = Ext.ComponentQuery.query('combobox[name="IS_ROOT_SHOW"]')[0];
									var dataModel = Ext.ComponentQuery.query('textfield[name="C_DATA_MODEL"]')[0];
									var dataSource = Ext.ComponentQuery.query('textareafield[name="C_DATA_SOURCE"]')[0];
									var dataSourceButton = Ext.ComponentQuery.query('button[name="DATA_SOURCE_BUTTON"]')[0];
									var dataSourceEdit = Ext.ComponentQuery.query('button[name="DATA_SOURCE_EDIT"]')[0];
									var dataSourcePreview = Ext.ComponentQuery.query('button[name="DATA_SOURCE_PREVIEW"]')[0];
									if (modeValue == "treecombobox" ) {
										isMul.setHidden(false);
										isLeaf.setHidden(false);
										isRootShow.setHidden(false);
										dataModel.setHidden(false);
										dataSource.setHidden(false);
										dataSourceButton.setHidden(false);
										dataSourceEdit.setHidden(false);
										dataSourcePreview.setHidden(false);
									} else if(modeValue == "combobox") {
										isLeaf.setHidden(false);
										isMul.setValue("0");
										isMul.setHidden(true);
										isLeaf.setValue("0");
										isLeaf.setHidden(true);
										dataModel.setHidden(false);
										dataSource.setHidden(false);
										dataSourceButton.setHidden(false);
										dataSourceEdit.setHidden(false);
										dataSourcePreview.setHidden(false);
									} else {
										isMul.setValue("0");
										isMul.setHidden(true);
										isLeaf.setValue("0");
										isLeaf.setHidden(true);
										isRootShow.setValue("0");
										isRootShow.setHidden(true);
										dataModel.setHidden(false);
										dataSource.setHidden(false);
										dataSourceButton.setHidden(false);
										dataSourceEdit.setHidden(false);
										dataSourcePreview.setHidden(false);
									}
									if (modeValue == "label") {
										queryRelation.setValue("");
										queryRelation.setDisabled(true);
									} else {
										queryRelation.setDisabled(false);
									}
								},
								change : function(self, newValue, oldValue, eOpts) {
									if (config.saveFlag) {
										saveConditionFormValues(config.c_id);
									}
								}
							}
						},
						{
							xtype : 'combobox',
							fieldLabel : '<span class="required">✶</span>是否显示根节点',
							name : 'IS_ROOT_SHOW',
							displayField : 'name',
							valueField : 'id',
							value : 1,
							store : DebtEleStore(json_root_show),
							editable : false,
							allowBlank : false,
							listeners : {
								change : function(self, newValue, oldValue, eOpts) {
									if (config.saveFlag) {
										saveConditionFormValues(config.c_id);
									}
								}
							}
						},
						{
							xtype : 'combobox',
							fieldLabel : '<span class="required">✶</span>是否多选',
							name : 'IS_MUL',
							displayField : 'name',
							valueField : 'id',
							value : 0,
							store : DebtEleStore(json_mul),
							editable : false,
							allowBlank : false,
							listeners : {
								change : function(self, newValue, oldValue, eOpts) {
									if (config.saveFlag) {
										saveConditionFormValues(config.c_id);
									}
								}
							}
						},
						{
							xtype : 'combobox',
							fieldLabel : '<span class="required">✶</span>只返回叶子节点',
							name : 'IS_LEAF',
							displayField : 'name',
							valueField : 'id',
							value : 0,
							store : DebtEleStore(json_leaf),
							editable : false,
							allowBlank : false,
							listeners : {
								change : function(self, newValue, oldValue, eOpts) {
									if (config.saveFlag) {
										saveConditionFormValues(config.c_id);
									}
								}
							}
						},
						{
							xtype : 'combobox',
							fieldLabel : '<span class="required">✶</span>允许为空',
							name : 'IS_MUST_INPUT',
							displayField : 'name',
							valueField : 'id',
							value : 0,
							store : DebtEleStore(json_must_type),
							editable : false,
							allowBlank : false,
							listeners : {
								change : function(self, newValue, oldValue, eOpts) {
									if (config.saveFlag) {
										saveConditionFormValues(config.c_id);
									}
								}
							}
						},
						{
							xtype : 'combobox',
							fieldLabel : '<span class="required">✶</span>权限过滤',
							name : 'IS_RIGHT',
							displayField : 'name',
							valueField : 'id',
							value : 0,
							store : DebtEleStore(json_right),
							editable : false,
							allowBlank : false,// 允许为空
							listeners : {
								change : function(self, newValue, oldValue, eOpts) {
									if (config.saveFlag) {
										saveConditionFormValues(config.c_id);
									}
								}
							}
						},
						{
							fieldLabel : '枚举项',
							name : 'C_DATA_MODEL',
							allowBlank : true,
							emptyText : 'key#value+key1#value1',
							hidden : dataSourceShow,
							validator : function(val) {
								if (!Ext.isEmpty(val)) {
									var keyValues = val.split("+");
									for ( var i = 0; i < keyValues.length; i++) {
										var keyValue = keyValues[i];
										var key_value = keyValue.split("#");
										if (key_value.length != 2 || key_value[1] == undefined || key_value[1] == null
												|| key_value[1] == "") {// undefined
											return "格式不正确,请输入正确的值:key#value+key1#value1";
										}
									}

								}
								return true;
							},
							listeners : {
								change : function(self, newValue, oldValue, eOpts) {
									if (config.saveFlag) {
										saveConditionFormValues(config.c_id);
									}
								}
							}
						},
						{
							xtype : 'textareafield',
							fieldLabel : '数据集<image onmouseover="sqlTip()" src="/report/image/common/alarmTip.png" width="12px"  height="12px">',
							name : 'C_DATA_SOURCE',
							allowBlank : true,
							hidden : dataSourceShow,
							listeners : {
								change : function(self, newValue, oldValue, eOpts) {
									if (config.saveFlag) {
										saveConditionFormValues(config.c_id);
									}
								}
							}
						},
						{
							xtype : 'button',
							text : '数据集',
							name : 'DATA_SOURCE_BUTTON',
							columnWidth : 0.35,
							icon : '/report/image/sysbutton/search.png',
							hidden : dataSourceShow,
							handler : function(self) {
								sqlSelect()
							}
						},
						{
							xtype : 'button',
							text : '编辑',
							name : 'DATA_SOURCE_EDIT',
							columnWidth : 0.3,
							icon : '/report/image/sysbutton/edit.png',
							hidden : dataSourceShow,
							handler : function(self) {
								var dataSourceSql = Ext.ComponentQuery.query('textareafield[name="C_DATA_SOURCE"]')[0]
										.getValue();
								Ext.create(
										'Ext.window.Window',
										{
											title : '数据集修改', // 窗口标题
											width : document.body.clientWidth * 0.7, // 窗口宽度
											height : document.body.clientHeight * 0.7, // 窗口高度
											layout : 'fit',
											maximizable : true,
											itemId : 'window_edit_table_sql', // 窗口标识
											buttonAlign : 'right', // 按钮显示的位置
											modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
											closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是destroy，则会将window销毁。
											items : [ {
												xtype : 'form',
												width : '100%',
												height : '100%',
												layout : 'column',
												autoScroll : true,
												defaults : {
													margin : '10 5 5 5',
													columnWidth : .99,
													labelAlign : "right",
													labelWidth : 100
												// 控件默认标签宽度
												},
												items : [ {
													xtype : 'textareafield',
													height : '95%',
													name : 'EDIT_SQL',
													allowBlank : false,
													value : dataSourceSql
												} ]
											} ],
											buttons : [
													{
														xtype : 'button',
														text : '确定',
														handler : function(self) {
															var editSql = Ext.ComponentQuery
																	.query('textareafield[name="EDIT_SQL"]')[0]
																	.getValue();
															Ext.ComponentQuery
																	.query('textareafield[name="C_DATA_SOURCE"]')[0]
																	.setValue(editSql);
															self.up('window').close();
														}
													}, {
														xtype : 'button',
														text : '关闭',
														handler : function(self) {
															self.up('window').close();
														}
													} ]
										}).show();
							}
						},
						{
							xtype : 'button',
							text : '预览',
							name : 'DATA_SOURCE_PREVIEW',
							columnWidth : 0.3,
							icon : '/report/image/sysbutton/search.png',
							hidden : dataSourceShow,
							handler : function(self) {
								var table = Ext.ComponentQuery.query('textareafield[name="C_DATA_SOURCE"]')[0]
										.getValue();
								var title = Ext.ComponentQuery.query('textfield[name="C_TITLE"]')[0].getValue();

								if (table == null || table == "") {
									Ext.MessageBox.alert('提示', '数据集为空不可预览!');
									return;
								}
								if (table.toUpperCase().indexOf("SELECT") == -1) {
									table = "select * from " + table;
								}
								table = encode64(table);
								$.post('/sys-report/data-assist/execute', {
									RUNSQL : table
								}, function(data) {
									if (data.select) {
										var parameter = data.condition;
										if (parameter.length > 0) {
											Ext.create('Ext.window.Window', {
												title : '参数',
												width : document.body.clientWidth * 0.3, // 窗口宽度
												height : document.body.clientHeight * 0.5, // 窗口高度
												layout : 'fit',
												maximizable : true,
												itemId : 'window_table_condition_info', // 窗口标识
												buttonAlign : 'right', // 按钮显示的位置
												modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
												closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是destroy，则会将window销毁。
												items : initWindow_table_condition_info(parameter),
												buttons : [ {
													xtype : 'button',
													text : '确定',
													handler : function(self) {
														var form = self.up('window').down('form');
														var formData = form.getValues();
														self.up('window').close();
														$.post('/sys-report/data-assist/table-header', {
															runsql : table
														}, function(data) {
															if (data.header) {
																// 弹出弹出框
																Ext.create('Ext.window.Window', {
																	title : title, // 窗口标题
																	width : document.body.clientWidth * 0.8, // 窗口宽度
																	height : document.body.clientHeight * 0.8, // 窗口高度
																	layout : 'fit',
																	maximizable : true,
																	itemId : 'window_table_info', // 窗口标识
																	buttonAlign : 'right', // 按钮显示的位置
																	modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
																	closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是destroy，则会将window销毁。
																	items : initWindow_table_info(table, data.header, title, formData),
																	buttons : [ {
																		xtype : 'button',
																		text : '关闭',
																		handler : function(self) {
																			self.up('window').close();
																		}
																	} ]
																}).show();
															}
														}, 'JSON');
													}
												}, {
													xtype : 'button',
													text : '取消',
													handler : function(self) {
														self.up('window').close();
													}
												} ]
											}).show();
										} else {
											$.post('/sys-report/data-assist/table-header', {
												runsql : table
											}, function(data) {
												if (data.header) {
													// 弹出弹出框
													Ext.create('Ext.window.Window', {
														title : title, // 窗口标题
														width : document.body.clientWidth * 0.8, // 窗口宽度
														height : document.body.clientHeight * 0.8, // 窗口高度
														layout : 'fit',
														maximizable : true,
														itemId : 'window_table_info', // 窗口标识
														buttonAlign : 'right', // 按钮显示的位置
														modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
														closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是destroy，则会将window销毁。
														items : initWindow_table_info(table, data.header, title),
														buttons : [ {
															xtype : 'button',
															text : '关闭',
															handler : function(self) {
																self.up('window').close();
															}
														} ]
													}).show();
												}
											}, 'JSON');
										}
									} else if (data.code == "20000") {
										Ext.MessageBox.alert('提示', '执行sql成功!');
									} else {
										Ext.MessageBox.alert('提示', data.msg);
									}
								}, 'JSON');
							}
						},
						{
							fieldLabel : '控件默认值<image onmouseover="valueTip()" src="/report/image/common/alarmTip.png" width="12px" height="12px">',
							name : 'C_DATA_VALUE',
							allowBlank : true,
							listeners : {
								change : function(self, newValue, oldValue, eOpts) {
									if (config.saveFlag) {
										saveConditionFormValues(config.c_id);
									}
								}
							}
						},
						{
							xtype : 'combobox',
							fieldLabel : '<span class="required">✶</span>查询关系符',
							name : 'QUERY_RELATION',
							displayField : 'name',
							valueField : 'id',
							value : 'like',
							store : DebtEleStore(json_query_relation),
							editable : false,
							allowBlank : false,
							listeners : {
								change : function(self, newValue, oldValue, eOpts) {
									if (config.saveFlag) {
										saveConditionFormValues(config.c_id);
									}
								}
							}
						},
						{
							fieldLabel : '控件tips提示',
							name : 'C_TIPS',
							allowBlank : true,
							listeners : {
								change : function(self, newValue, oldValue, eOpts) {
									if (config.saveFlag) {
										saveConditionFormValues(config.c_id);
									}
								}
							}
						},
						{
							xtype : 'combobox',
							fieldLabel : '依赖查询控件编码',
							name : 'C_SRC_ID',
							displayField : 'name',
							valueField : 'id',
							store : getSrcStore(config.c_id),
							editable : false,
							allowBlank : true,
							listeners : {
								expand : function(self, eOpts) {
									self.getStore().load();
								},
								change : function(self, newValue, oldValue, eOpts) {
									if (config.saveFlag) {
										saveConditionFormValues(config.c_id);
									}
								}
							}
						},
						{
							xtype : 'combobox',
							fieldLabel : '<span class="required">✶</span>控件是否可见',
							name : 'IS_SHOW',
							displayField : 'name',
							valueField : 'id',
							value : 1,
							store : DebtEleStore(json_show_type),
							editable : false,
							allowBlank : false,
							listeners : {
								change : function(self, newValue, oldValue, eOpts) {
									var c_code = null;
									var SHOW_CODE = null;
									var title = null;
									for ( var key in conditionList) {
										if (config.c_id == conditionList[key].C_ID) {
											c_code = conditionList[key].C_CODE;
											SHOW_CODE = conditionList[key].SHOW_CODE;
											title = conditionList[key].C_TITLE;
										}
									}
									var name = c_code;
									var fieldLabel = '<span ondblclick="shanchu(\'' + name + '\',\'combobox\',\''
											+ config.c_id + '\');">' + title + '</span>';
									if (newValue == 0) {
										fieldLabel = '<span class="no-show" ondblclick="shanchu(\'' + name
												+ '\',\'combobox\',\'' + config.c_id + '\');">' + title + '</span>';
									}
									var assembly = Ext.ComponentQuery.query('combobox[name="' + name + '"]')[0];
									if (assembly) {
										assembly.setFieldLabel(fieldLabel);
									} else {
										name = SHOW_CODE;
										assembly = Ext.ComponentQuery.query('combobox[name="' + name + '"]')[0];
										assembly.setFieldLabel(fieldLabel);
									}
									if (config.saveFlag) {
										saveConditionFormValues(config.c_id);
									}
								}
							}
						} ]
			});
	// 初始化及回显
	form.getForm().setValues(config.data);
	var modeValue = Ext.ComponentQuery.query('combobox[name="C_DISP_MODE"]')[0].getValue();
	var isMul = Ext.ComponentQuery.query('combobox[name="IS_MUL"]')[0];
	var isRootShow = Ext.ComponentQuery.query('combobox[name="IS_ROOT_SHOW"]')[0];
	if (modeValue == "treecombobox") {
		isMul.setHidden(false);
		isRootShow.setHidden(false);
	} else {
		isMul.setValue("0");
		isMul.setHidden(true);
		isRootShow.setValue("0");
		isRootShow.setHidden(true);
	}
	if (config.saveFlag) {
		var formValues = form.getForm().getValues();
		conditions[config.c_id] = formValues;
		conditionsTemp[config.c_id] = formValues;
	} else {
		setTimeout(function() {
			config.saveFlag = true;
		}, 1000);
	}
	return form;
}

function getSrcStore(cid) {
	// code#value+code1#value1
	var json_store = new Array();
	for ( var i = 0; i < conditionList.length; i++) {
		var condition = conditionList[i];
		if (condition.C_ID != cid) {
			var id = condition.C_ID;
			var code = condition.C_FIELD_CODE;
			var name = condition.C_TITLE;
			if (conditions[id]) {
				code = conditions[id].C_CODE;
				name = conditions[id].C_TITLE;
			}
			json_store.push({
				id : code,
				code : code,
				name : code + " " + name
			});
		}
	}
	var store = Ext.create('Ext.data.Store', {
		fields : [ 'id', 'code', 'name' ],
		data : json_store
	});
	return store;
}

function conditionCodeStore(q_id) {
	var store = new Ext.data.Store({
		autoLoad : true,
		fields : [ 'id', 'code', 'name' ],
		proxy : {
			type : 'ajax',
			url : '/sys-report/getContidionCodeStore',
			extraParams : {
				Q_ID : q_id
			},
			reader : {
				type : 'json',
				root : 'list'
			}
		}
	});
	return store;
}

function saveConditionFormValues(c_id) {
	var form = Ext.ComponentQuery.query('form#window_tjpz_contentForm')[0];
	var formValues = form.getForm().getValues();
	conditions[c_id] = formValues;
	conditionsTemp[c_id] = formValues;
	for ( var i = 0; i < conditionList.length; i++) {
		if (conditionList[i] && conditionList[i].C_ID == c_id) {
			conditionList[i].C_TITLE = formValues.C_TITLE;
			conditionList[i].C_CODE = formValues.C_CODE;
		}
	}
}

function conditionConfig(c_id) {
	var form = Ext.ComponentQuery.query('form#window_tjpz_contentForm')[0];
	var conditionCode = Ext.ComponentQuery.query('combobox[name="C_CODE"]')[0].getValue();
	Ext.Ajax.request({
		method : 'POST',
		url : "/sys-report/getConditionConfigByCode",
		params : {
			conditionCode : conditionCode
		},
		async : false,
		success : function(response, options) {
			// // 获取返回的JSON，并根据gridid，获取表头配置信息
			var respText = Ext.util.JSON.decode(response.responseText);
			if (respText.success) {
				var conditionConfig = eval(respText.conditionList)[0];
				form.getForm().setValues(conditionConfig);
			}
			// var formValues = form.getForm().getValues();
			// conditions[c_id] = formValues;
		},
		failure : function(response, options) {

		}
	});
	saveConditionFormValues(c_id);
}

function saveReport() {
	Ext.ComponentQuery.query('button[name="save"]')[0].setDisabled(true);
	if (!mapIsEmpty(queryList)) {
		var qId = queryList.Q_ID;
		var qTitle = queryList.Q_TITLE;
		var qTable = queryList.Q_TABLE;
		if (qId == null || qId == "") {
			Ext.ComponentQuery.query('button[name="save"]')[0].setDisabled(false);
			Ext.MessageBox.alert('提示', '请填写报表ID!');
			return;
		}
		if (qTitle == null || qTitle == "") {
			Ext.ComponentQuery.query('button[name="save"]')[0].setDisabled(false);
			Ext.MessageBox.alert('提示', '请填写报表名称!');
			return;
		}
		if (qTable == null || qTable == "") {
			Ext.ComponentQuery.query('button[name="save"]')[0].setDisabled(false);
			Ext.MessageBox.alert('提示', '请填写表/视图或数据源sql!');
			return;
		}
	}
	if (!mapIsEmpty(fields)) {
		for ( var key1 in fields) {
			var field = fields[key1];
			var fieldCode = field.FIELD_CODE;
			var fieldTitle = field.FIELD_TITLE;
			if (fieldTitle == null || fieldTitle == "") {
				Ext.ComponentQuery.query('button[name="save"]')[0].setDisabled(false);
				Ext.MessageBox.alert('提示', '请填写数据列名称!');
				return;
			}
			var sameFlag = false;
			if (fieldCode != null && fieldCode != "") {
				for ( var key2 in fields) {
					if (key1 != key2) {
						var fieldCode1 = fields[key2].FIELD_CODE;
						if (fieldCode == fieldCode1) {
							sameFlag = true;
							break;
						}
					}
				}
			}
			if (sameFlag) {
				Ext.ComponentQuery.query('button[name="save"]')[0].setDisabled(false);
				Ext.MessageBox.alert('提示', '数据列编码：' + fieldCode + '重复！');
				return;
			}
		}
	}
	// conditionList
	if (!mapIsEmpty(conditions)) {
		for ( var key in conditions) {
			var condition = conditions[key];
			var cCode = condition.C_CODE;
			var cTitle = condition.C_TITLE;
			var cFieldCode = condition.C_FIELD_CODE;
			var cDispMode = condition.C_DISP_MODE;
			var cDataModel = condition.C_DATA_MODEL;
			var cDataSource = condition.C_DATA_SOURCE;
			var queryRelation = condition.QUERY_RELATION;
			if (cCode == null || cCode == "") {
				Ext.ComponentQuery.query('button[name="save"]')[0].setDisabled(false);
				Ext.MessageBox.alert('提示', '请填写控件编码!');
				return;
			}
			if (cTitle == null || cTitle == "") {
				Ext.ComponentQuery.query('button[name="save"]')[0].setDisabled(false);
				Ext.MessageBox.alert('提示', '请填写控件名称!');
				return;
			}
			// if(cFieldCode == null || cFieldCode ==""){
			// Ext.ComponentQuery.query('button[name="save"]')[0].setDisabled(false);
			// Ext.MessageBox.alert('提示', '请填写查询列!');
			// return;
			// }
			if (cDispMode == "treecombobox" || cDispMode == "combobox") {
				if ((cDataModel == null || cDataModel == "") && (cDataSource == null || cDataSource == "")) {
					Ext.ComponentQuery.query('button[name="save"]')[0].setDisabled(false);
					Ext.MessageBox.alert('提示', '下拉框、下拉树需配置数据集!');
					return;
				}
			}5
		}
	}
	$.post("/sys-report/saveReportInfo", {
		configColumns : encode64(Ext.util.JSON.encode(configColumns)),
		fields : encode64(Ext.util.JSON.encode(fields)),
		conditionList : encode64(Ext.util.JSON.encode(conditionList)),
		conditions : encode64(Ext.util.JSON.encode(conditions)),
		queryList : encode64(Ext.util.JSON.encode(queryList)),
		q_id : encode64(q_id)
	}, function(data) {
		if (data.success) {
			Ext.toast({
				html : "保存成功！",
				closable : false,
				align : 't',
				slideInDuration : 400,
				minWidth : 400
			});
			var manageTreePanel = Ext.ComponentQuery.query('treepanel#manageTree')[0];
			manageTreePanel.getStore().load({
				callback : function(records, operation, success) {
					var node = manageTreePanel.getStore().getNodeById(q_id);
					treeSearch(Ext.ComponentQuery.query('treepanel#manageTree')[0],q_id);
					fieldsTemp = {};
					conditionsTemp = {};
					queryList = {};
					fieldsLength = getMapLength(fields);
					conditionlength = conditionList.length;
					var table = node.get("table");
					if (table == null) {
						Ext.MessageBox.minWidth = 120;
						Ext.Msg.alert('提示', '请配置数据源！');
						return;
					}
					var fieldTree = Ext.ComponentQuery.query('treepanel#fieldTree')[0];
					var fieldStore = fieldTree.getStore();
					fieldStore.getProxy().extraParams = {
						q_id : q_id
					};
					fieldStore.load();
					// changeReport(node);
				}
			});
		} else {
			Ext.MessageBox.alert('提示', '保存失败！' + data.message);
		}
		Ext.ComponentQuery.query('button[name="save"]')[0].setDisabled(false);
	}, "json");
}

function changeReport(record) {
	deleteFlag = false;
	queryList = {};
	conditionList = {};
	conditions = {};
	columns = new Array();
	configColumns = new Array();
	fields = {};
	fieldsTemp = {};
	conditionsTemp = {};
	showRecord = {};
	ddTemp = "";
	q_id = record.get("id");
	// var code = record.get("code");
	// var sql = record.get("sql");
	var table = record.get("table");
	if (table == null) {
		Ext.MessageBox.minWidth = 120;
		Ext.Msg.alert('提示', '请配置数据源！');
		return;
	}
	var fieldTree = Ext.ComponentQuery.query('treepanel#fieldTree')[0];
	var fieldStore = fieldTree.getStore();
	fieldStore.getProxy().extraParams = {
		q_id : q_id
	};
	fieldStore.load();
	var mainPanel = Ext.ComponentQuery.query('panel#mainPanel')[0];
	mainPanel.removeAll(true);
	loadReport(q_id);
	mainPanel.add(initSelect());
	fieldConf(configColumns, false, true);
	mainPanel.add(initGrid());
	conditionlength = conditionList.length;
	conditionConf(conditionList);
	Ext.ComponentQuery.query('button[name="import"]')[0].setHidden(false);
	Ext.ComponentQuery.query('button[name="save"]')[0].setDisabled(false);
	var reportGrid = DSYGrid.getGrid('reportGrid');
	var reportStroe = reportGrid.getStore();
	reportStroe.insertData(0, showRecord);
	reportGrid.reconfigure(reportStroe, columns);
	Ext.resumeLayouts(true);
	fieldsLength = getMapLength(fields);
	var rightConfig = Ext.ComponentQuery.query('panel#rightConfig')[0];
	rightConfig.removeAll(true);
	var id = record.get('id');
	var text = q_title;
	var q_is_title = record.get('q_is_title');
	var unit = record.get('unit');
	var q_is_right = record.get('q_is_right');
	var q_is_page = record.get('q_is_page');
	var q_is_sum = record.get('q_is_sum');
	var q_is_openrun = record.get('q_is_openrun');
	var q_is_button = record.get('q_is_button');
	var q_remark = record.get('q_remark');
	var q_note = record.get('q_note');
	var export_data_format = record.get('export_data_format');
	var right_level = record.get('right_level');
	var export_level = record.get('export_level');
	var data = {
		Q_ID : id,
		Q_TITLE : text,
		Q_IS_TITLE : q_is_title,
		Q_TABLE : table,
		MONEY_UNIT : unit,
		Q_IS_RIGHT : q_is_right,
		Q_IS_PAGE : q_is_page,
		Q_IS_SUM : q_is_sum,
		Q_IS_OPENRUN : q_is_openrun,
		Q_REMARK : q_remark,
		Q_NOTE : q_note,
		EXPORT_DATA_FORMAT : export_data_format,
		Q_IS_BUTTON : q_is_button,
		RIGHT_LEVEL : right_level,
		EXPORT_LEVEL : export_level
	};
	// queryList = data;
	rightConfig.setTitle("基本信息配置");
	rightConfig.add(initWindow_report_config_contentForm({
		edit : true,
		columnWidth : .99,
		data : data,
		saveFlag : true
	}));
}

function saveJbxxFormValues() {
	var form = Ext.ComponentQuery.query('form#jbxxForm')[0];
	var formValues = form.getForm().getValues();
	queryList = formValues;
}

var fieldRightClick = new Ext.menu.Menu({
	float : true,
	items : [ {
		text : '添加为条件',
		// 增加菜单点击事件
		handler : function() {
			var code = currentNode.get('code');
			var fieldtitle = currentNode.get('title');
			var flag = true;
			var conditionPanel = Ext.ComponentQuery.query('form#condition')[0];
			conditionPanel.items.each(function(item, index, length) {
				var label = item.name;
				if (code == label) {
					alert("条件已存在");
					flag = false;
					return;
				}
			});
			if (flag) {
				var cid = GUID.createGUID();
				conditionList.push({
					C_ID : cid,
					C_CODE : code,
					SHOW_CODE : code,
					C_TITLE : fieldtitle
				});
				conditionPanel.add({
					xtype : 'combobox',
					fieldLabel : '<span ondblclick="shanchu(\'' + code + '\',\'combobox\',\'' + cid + '\');">'
							+ fieldtitle + '</span>',
					name : code,
					margin : '2 5 2 2',
					padding : '0 0 0 0',
					listeners : {
						render : function(self) {
							Ext.QuickTips.init();  
							Ext.QuickTips.register({  
								target : self.el,  
								text : '双击标题删除'
							});
							self.getEl().on('click', function(self) {
								if (timer1) {
									timer1 = false;
									task1 = new Ext.util.DelayedTask(function() {
										var rightConfig = Ext.ComponentQuery.query('panel#rightConfig')[0];
										rightConfig.removeAll(true);
										rightConfig.setTitle("查询条件配置");
										if (conditions[cid]) {
											rightConfig.add(initConditonConfig({
												c_id : cid,
												data : conditions[cid]
											}));
										} else {
											$.post("/sys-report/getConditonInfo", {
												c_id : cid,
												code : code
											}, function(jsondata) {
												var data = jsondata[0];
												if (mapIsEmpty(data)) {
													data = {
														C_ID : cid,
														C_CODE : code,
														C_TITLE : fieldtitle
													};
												}
												conditions[cid] = data;
												rightConfig.add(initConditonConfig({
													c_id : cid,
													data : conditions[cid],
													saveFlag : true
												}));
											}, "json");
										}
										timer1 = true;
									});
									task1.delay(300);
								}
							});
						}
					}
				});
			} else {
				return;
			}
		}
	} ]
});

var json_is_title = [ {
	id : "0",
	code : "0",
	name : "不显示标题"
}, {
	id : "1",
	code : "1",
	name : "显示标题"
} ];

var json_unit = [ {
	id : "0",
	code : "0",
	name : "不显示"
}, {
	id : "1",
	code : "1",
	name : "元"
}, {
	id : "10000",
	code : "10000",
	name : "万元"
}, {
	id : "100000000",
	code : "100000000",
	name : "亿元"
} ];
var json_right_type = [ {
	id : "0",
	code : "0",
	name : "不过滤"
}, {
	id : "1",
	code : "1",
	name : "用户权限"
} ];
var json_right = [ {
	id : "0",
	code : "0",
	name : "不过滤"
}, {
	id : "1",
	code : "1",
	name : "区划过滤"
} ];

var json_page = [ {
	id : "0",
	code : "0",
	name : "不分页"
}, {
	id : "1",
	code : "1",
	name : "分页"
} ];

var json_sum = [ {
	id : "0",
	code : "0",
	name : "合计行不显示"
}, {
	id : "1",
	code : "1",
	name : "合计行显示"
} ];

var json_openrun = [ {
	id : "0",
	code : "0",
	name : "不查询"
}, {
	id : "1",
	code : "1",
	name : "查询"
} ];

var json_button = [ {
	id : "0",
	code : "0",
	name : "不显示"
}, {
	id : "1",
	code : "1",
	name : "显示"
} ];
var json_right_level = [ {
	id : "0",
	code : "0",
	name : "单位权限"
}, {
	id : "1",
	code : "1",
	name : "财政权限"
}, {
	id : "2",
	code : "2",
	name : "财政白名单"
} ];
var json_export_data_format = [ {
	id : "0",
	code : "0",
	name : "原样导出"
}, {
	id : "1",
	code : "1",
	name : "列数据格式导出"
} ];
var json_export_level = [ {
	id : "0",
	code : "0",
	name : "不允许导出"
}, {
	id : "1",
	code : "1",
	name : "导出EXCEL"
}, {
	id : "2",
	code : "2",
	name : "导出全部"
} ];

var json_field_type = [ {
	id : "string",
	code : "string",
	name : "左对齐字符"
}, {
	id : "rstring",
	code : "rstring",
	name : "右对齐字符"
}, {
	id : "float",
	code : "float",
	name : "浮点数字"
}, {
	id : "int",
	code : "int",
	name : "整数"
} , {
	id : "numberstr",
	code : "numberstr",
	name : "非金额列"
} ];

var json_url_type = [ {
	id : "0",
	code : "0",
	name : "新窗口"
}, {
	id : "1",
	code : "1",
	name : "对话框"
} ];

var json_show_type = [ {
	id : "0",
	code : "0",
	name : "不可见"
}, {
	id : "1",
	code : "1",
	name : "可见"
}, {
	id: "2",
	code: "2",
	name: "自定义"
} ];

var json_url_param_type = [ {
	id : "0",
	code : "0",
	name : "非超链接参数"
}, {
	id : "1",
	code : "1",
	name : "超链接参数"
} ];

var json_sum_type = [ {
	id : "0",
	code : "0",
	name : "合计行不计算"
}, {
	id : "1",
	code : "1",
	name : "合计行计算"
} ];

var json_newline_type = [ {
	id : "0",
	code : "0",
	name : "不换行"
}, {
	id : "1",
	code : "1",
	name : "自动换行"
} ];
var json_data_sort = [ {
	id : "asc",
	code : "asc",
	name : "升序"
}, {
	id : "desc",
	code : "desc",
	name : "降序"
} ];
var json_is_lock = [ {
	id : "0",
	code : "0",
	name : "非锁定列"
}, {
	id : "1",
	code : "1",
	name : "锁定列"
} ];

var json_is_merge = [ {
	id : "0",
	code : "0",
	name : "不合并"
}, {
	id : "1",
	code : "1",
	name : "合并"
} ];

var json_must_type = [ {
	id : "0",
	code : "0",
	name : "允许为空"
}, {
	id : "1",
	code : "1",
	name : "不允许为空"
} ];

var json_root_show = [ {
	id : "0",
	code : "0",
	name : "不显示根节点"
}, {
	id : "1",
	code : "1",
	name : "显示根节点"
} ];

var json_mul = [ {
	id : "0",
	code : "0",
	name : "单选"
}, {
	id : "1",
	code : "1",
	name : "多选"
} ];

var json_leaf = [ {
	id : "0",
	code : "0",
	name : "全部"
}, {
	id : "1",
	code : "1",
	name : "只返回叶子节点"
} ];

var json_disp_mode_type = [ {
	id : "textfield",
	code : "textfield",
	name : "文本框"
}, {
	id : "combobox",
	code : "combobox",
	name : "下拉框"
}, {
	id : "datefield",
	code : "datefield",
	name : "日期"
}, {
	id : "treecombobox",
	code : "treecombobox",
	name : "下拉树"
}, {
	id : "label",
	code : "label",
	name : "描述框"
}, {
	id : "numberfield",
	code : "numberfield",
	name : "数值"
} ];

var json_query_relation = [ {
	id : "like",
	code : "like",
	name : "like"
}, {
	id : "in",
	code : "in",
	name : "in"
}, {
	id : "=",
	code : "=",
	name : "="
}, {
	id : "<=",
	code : "<=",
	name : "<="
}, {
	id : ">=",
	code : ">=",
	name : ">="
}, {
	id : ">",
	code : ">",
	name : ">"
}, {
	id : "<",
	code : "<",
	name : "<"
}, {
	id : "rlike",
	code : "rlike",
	name : "like%"
}, {
	id : "llike",
	code : "llike",
	name : "%like"
} ];
var json_ele_data = [ {
	id : "0",
	code : "0",
	name : "否"
}, {
	id : "1",
	code : "1",
	name : "是"
} ];

function initWindow_file_add(parent_id, levelno, parent_name) {
	// 弹出弹出框
	Ext.create('Ext.window.Window', {
		title : '新增目录', // 窗口标题
		width : 400, // 窗口宽度
		height : 170, // 窗口高度
		layout : 'fit',
		maximizable : true,
		buttonAlign : 'right', // 按钮显示的位置
		modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
		closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是destroy，则会将window销毁。
		items : [ {
			xtype : 'form',
			width : '100%',
			height : '100%',
			layout : 'column',
			autoScroll : true,
			defaultType : 'textfield',
			defaults : {
				margin : '10 5 5 5',
				columnWidth : .99,
				labelAlign : "right",
				labelWidth : 100
			// 控件默认标签宽度
			},
			items : [ {
				fieldLabel : '<span class="required">✶</span>父目录',
				name : 'PARENT_NAME',
				allowBlank : false,// 允许为空
				disabled : true,
				value : parent_name
			}, {
				fieldLabel : '<span class="required">✶</span>目录名称',
				name : 'FILE_NAME',
				allowBlank : false
			// 允许为空
			} ]
		} ],
		buttons : [ {
			xtype : 'button',
			text : '保存',
			handler : function(self) {
				var form = self.up('window').down('form');
				if (form.isValid()) {
					var formData = form.getForm().getFieldValues();
					formData = $.extend({}, formData, form.getValues());
					formData.parent_id = parent_id;
					formData.levelno = levelno;
					$.post('/sys-report/addReportFile', {
						detailForm : Ext.util.JSON.encode([ formData ])
					}, function(data) {
						if (data.success) {
							Ext.toast({
								html : "保存成功！",
								closable : false,
								align : 't',
								slideInDuration : 400,
								minWidth : 400
							});
							self.up('window').close();
							var manageTreePanel = Ext.ComponentQuery.query('treepanel#manageTree')[0];
							manageTreePanel.getStore().load();
						} else {
							Ext.MessageBox.alert('提示', '保存失败!' + data.message);
						}
					}, 'JSON');
				}
			}
		}, {
			xtype : 'button',
			text : '取消',
			handler : function(self) {
				self.up('window').close();
			}
		} ]
	}).show();
}

function initWindow_file_update(id, name) {
	// 弹出弹出框
	Ext.create('Ext.window.Window', {
		title : '修改目录', // 窗口标题
		width : 400, // 窗口宽度
		height : 170, // 窗口高度
		layout : 'fit',
		maximizable : true,
		buttonAlign : 'right', // 按钮显示的位置
		modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
		closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是destroy，则会将window销毁。
		items : [ {
			xtype : 'form',
			width : '100%',
			height : '100%',
			layout : 'column',
			autoScroll : true,
			defaultType : 'textfield',
			defaults : {
				margin : '10 5 5 5',
				columnWidth : .99,
				labelAlign : "right",
				labelWidth : 100
			// 控件默认标签宽度
			},
			items : [ {
				fieldLabel : '<span class="required">✶</span>目录名称',
				name : 'FILE_NAME',
				allowBlank : false,// 允许为空
				value : name
			} ]
		} ],
		buttons : [ {
			xtype : 'button',
			text : '保存',
			handler : function(self) {
				var form = self.up('window').down('form');
				if (form.isValid()) {
					var formData = form.getForm().getFieldValues();
					formData = $.extend({}, formData, form.getValues());
					formData.id = id;
					$.post('/sys-report/updateReportFile', {
						detailForm : Ext.util.JSON.encode([ formData ])
					}, function(data) {
						if (data.success) {
							Ext.toast({
								html : "保存成功！",
								closable : false,
								align : 't',
								slideInDuration : 400,
								minWidth : 400
							});
							self.up('window').close();
							var manageTreePanel = Ext.ComponentQuery.query('treepanel#manageTree')[0];
							manageTreePanel.getStore().load();
						} else {
							Ext.MessageBox.alert('提示', '保存失败!' + data.message);
						}
					}, 'JSON');
				}
			}
		}, {
			xtype : 'button',
			text : '取消',
			handler : function(self) {
				self.up('window').close();
			}
		} ]
	}).show();
}

function initWindow_report_resave(select) {
	// 弹出弹出框
	Ext.create('Ext.window.Window', {
		title : '另存为报表', // 窗口标题
		width : document.body.clientWidth * 0.45,// 窗口宽度
		height : document.body.clientHeight * 0.8, // 窗口高度
		layout : 'fit',
		maximizable : true,
		buttonAlign : 'right', // 按钮显示的位置
		modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
		closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是destroy，则会将window销毁。
		items : initWindow_report_resave_contentForm(),
		buttons : [ {
			xtype : 'textfield',
			fieldLabel : '<span class="required">✶</span>报表名称',
			name : 'FILE_ID',
			labelAlign : "left",
			labelWidth : 68,
			width : '35%',
			allowBlank : false
		// 允许为空
		}, {
			xtype : 'textfield',
			fieldLabel : '<span class="required">✶</span>报表标题',
			name : 'FILE_NAME',
			labelAlign : "left",
			labelWidth : 68,
			width : '35%',
			value : select.get('text'),
			allowBlank : false
		// 允许为空
		}, {
			xtype : 'button',
			text : '保存',
			handler : function(self) {
				var fileName = Ext.ComponentQuery.query('textfield[name="FILE_NAME"]')[0].getValue();
				var fileId = Ext.ComponentQuery.query('textfield[name="FILE_ID"]')[0].getValue();
				var resaveReportPanel = Ext.ComponentQuery.query('treepanel#resaveReportTree')[0];
				var result = resaveReportPanel.getSelectionModel().getSelection()[0];
				if (!fileId) {
					Ext.MessageBox.alert('提示', '报表名称不允许为空!');
					return;
				}
				if (!fileName) {
					Ext.MessageBox.alert('提示', '报表标题不允许为空!');
					return;
				}
				var parentId = "";
				var copy_id = select.get("id");
				if (result) {
					if (!result.get("leaf")) {
						parentId = result.get("id");
					} else {
						Ext.MessageBox.alert('提示', '请选择文件目录!');
						return;
					}
				}
				$.post('/sys-report/resaveReport', {
					parentId : parentId,
					copy_id : copy_id,
					fileId : fileId,
					fileName : fileName
				}, function(data) {
					if (data.success) {
						Ext.toast({
							html : "保存成功！",
							closable : false,
							align : 't',
							slideInDuration : 400,
							minWidth : 400
						});
						self.up('window').close();
						q_id = data.qid;
						var manageTreePanel = Ext.ComponentQuery.query('treepanel#manageTree')[0];
						manageTreePanel.getStore().load({
							callback : function(records, operation, success) {
								var node = manageTreePanel.getStore().getNodeById(q_id);
								currentReport = node;
								manageTreePanel.getSelectionModel().select(node);
								treeSearch(Ext.ComponentQuery.query('treepanel#manageTree')[0],q_id);
								changeReport(node);
							}
						});
					} else {
						Ext.MessageBox.alert('提示', '保存失败!' + data.message);
					}
				}, 'JSON');
			}
		}, {
			xtype : 'button',
			text : '关闭',
			handler : function(self) {
				self.up('window').close();
			}
		} ]
	}).show();
}

function initWindow_report_resave_contentForm() {
	var resaveReportStroe = new Ext.data.TreeStore({
		model : 'reportTreeModel',
		proxy : {
			type : 'ajax',
			actionMethods : 'POST',
			url : '/sys-report/getReportTree',
			reader : {
				type : 'json'
			}
		},
		autoLoad : true
	});
	var form = Ext.create('Ext.panel.Panel', {
		width : '100%',
		height : '100%',
		scrollable : true,
		border : false,
		layout : 'fit',
		items : [ {
			xtype : 'treepanel',
			itemId : 'resaveReportTree',
			store : resaveReportStroe,
			rootVisible : false
		} ]
	});
	return form;
}

function initWindow_report_export() {
	// 弹出弹出框
	Ext.create('Ext.window.Window', {
		title : '导出报表', // 窗口标题
		width : document.body.clientWidth * 0.4, // 窗口宽度
		height : document.body.clientHeight * 0.8, // 窗口高度
		layout : 'fit',
		maximizable : true,
		buttonAlign : 'right', // 按钮显示的位置
		modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
		closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是destroy，则会将window销毁。
		items : initWindow_report_export_content(),
		buttons : [ {
			xtype : 'textfield',
			fieldLabel : '<span class="required">✶</span>导出文件名称',
			name : 'EXPORT_FILE_NAME',
			labelAlign : "left",
			labelWidth : 100,
			width : '68%',
			value : '报表设计',
			allowBlank : false
		// 允许为空
		}, {
			xtype : 'button',
			text : '导出',
			handler : function(self) {
				var fileName = Ext.ComponentQuery.query('textfield[name="EXPORT_FILE_NAME"]')[0].getValue();
				var exportTreePanel = Ext.ComponentQuery.query('treepanel#exportReportTree')[0];
				var records = exportTreePanel.getView().getChecked();
				var qids = [];
				Ext.Array.each(records, function(rec) {
					if (rec.get('leaf')) {
						qids.push(rec.get('id'));
					}
				});
				if (qids.length == 0) {
					return;
				}
				DSYGrid.exportExcelClick('reportGrid', {
					exportExcel : true,
					url : '/sys-report/expQueryReport',
					param : {
						qids : qids,
						fileName : fileName
					}
				});
			}
		}, {
			xtype : 'button',
			text : '关闭',
			handler : function(self) {
				self.up('window').close();
			}
		} ]
	}).show();
}

function initWindow_report_export_content() {
	var exportReportStroe = new Ext.data.TreeStore({
		model : 'reportTreeModel',
		proxy : {
			type : 'ajax',
			actionMethods : 'POST',
			url : '/sys-report/getExportReportTree',
			reader : {
				type : 'json'
			}
		},
		autoLoad : true
	});
	var form = Ext.create('Ext.panel.Panel', {
		width : '100%',
		height : '100%',
		scrollable : true,
		border : false,
		layout : 'fit',
		items : [ {
			xtype : 'treepanel',
			itemId : 'exportReportTree',
			store : exportReportStroe,
			rootVisible : false,
			listeners : {
				checkchange : function(node, checked) {
					if(!node.loaded){// 子节点是否加载 
						node.expand();  
					}
					if(node.parentNode && node.parentNode.id!='root'){  
						selectParentNodes(node,checked);// 是否选定父节点  
					}
					selectChildNodes(node,checked);
				}
			}
		} ]
	});
	return form;
}

function selectParentNodes(node, checked) {
	var partial = true;
	if (node.parentNode && node.parentNode.id != 'root') {
		var parent = node.parentNode;
		parent.eachChild(function(parentChild) {
			if (parentChild.get("checked") != checked) {
				parent.set("checked", false);
				partial = false;
				return false;
			}
		});
		if (partial) {
			parent.set("checked", checked);
		}
		selectParentNodes(node.parentNode, checked);
	}
}

function selectChildNodes(node, checked) {
	node.eachChild(function(childNode) {
		childNode.set('checked', checked);
		if(!!!childNode.leaf){
			if(!childNode.loaded){  
				childNode.expand();  
			}  
			selectChildNodes(childNode,checked);   
		}                         
	});
}

function initWindow_report_import(qidList) {
	// 弹出弹出框
	Ext.create('Ext.window.Window', {
		title : '导入报表', // 窗口标题
		width : document.body.clientWidth * 0.4, // 窗口宽度
		height : document.body.clientHeight * 0.8, // 窗口高度
		layout : 'fit',
		maximizable : true,
		buttonAlign : 'right', // 按钮显示的位置
		modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
		closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是destroy，则会将window销毁。
		items : initWindow_report_import_content(qidList),
		buttons : [ {
			xtype : 'button',
			text : '关闭',
			handler : function(self) {
				self.up('window').close();
			}
		} ]
	}).show();
}

function initWindow_report_import_content(qidList) {
	var importReportStroe = new Ext.data.TreeStore({
		model : 'reportTreeModel',
		proxy : {
			type : 'ajax',
			actionMethods : 'POST',
			url : '/sys-report/getImportReportTree',
			extraParams : {
				qidList : Ext.util.JSON.encode(qidList),
			},
			reader : {
				type : 'json'
			}
		},
		autoLoad : true
	});
	var form = Ext.create('Ext.panel.Panel', {
		width : '100%',
		height : '100%',
		scrollable : true,
		border : false,
		layout : 'fit',
		items : [ {
			xtype : 'treepanel',
			itemId : 'importReportTree',
			store : importReportStroe,
			rootVisible : false
		} ]
	});
	return form;
}

function sqlSelect() {
	// 弹出弹出框
	Ext.create('Ext.window.Window', {
		title : '条件数据集', // 窗口标题
		width : document.body.clientWidth * 0.6, // 窗口宽度
		height : document.body.clientHeight * 0.6, // 窗口高度
		layout : 'fit',
		maximizable : true,
		buttonAlign : 'right', // 按钮显示的位置
		modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
		closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是destroy，则会将window销毁。
		items : initWindow_sqlSelect_content(),
		buttons : [ {
			xtype : 'button',
			text : '确定',
			handler : function(self) {
				var record = DSYGrid.getGrid('sqlSelectGrid').getCurrentRecord();
				if (record == null) {
					self.up('window').close();
					return;
				}
				var C_DATA_SOURCE = record.get("C_DATA_SOURCE");
				Ext.ComponentQuery.query('textareafield[name="C_DATA_SOURCE"]')[0].setValue(C_DATA_SOURCE);
				self.up('window').close();
			}
		}, {
			xtype : 'button',
			text : '关闭',
			handler : function(self) {
				self.up('window').close();
			}
		} ]
	}).show();
}

function initWindow_sqlSelect_content() {
	var headerJson = [ {
		dataIndex : "C_CODE",
		type : "string",
		text : "控件编码",
		width : 150
	}, {
		dataIndex : "C_TITLE",
		type : "string",
		text : "控件名称",
		width : 150
	}, {
		dataIndex : "C_DATA_SOURCE",
		type : "string",
		text : "数据集",
		width : 400,
		cellWrap : true
	} ];
	var grid = DSYGrid.createGrid({
		itemId : 'sqlSelectGrid',
		headerConfig : {
			headerJson : headerJson,
			columnAutoWidth : false
		},
		checkBox : false,
		border : false,
		autoLoad : true,
		height : '100%',
		dataUrl : '/sys-report/getConditionSelectSql',
		pageConfig : {
			enablePage : false
		}
	});
	return grid;
}


/**
 * 主表数据集提示信息
 */
 function qTableTip() {
	Ext.toast({
		html : "报表组件包含以下系统参数：</br><table>"
				+ "<tr><td>SYS_ADCODE</td><td>当前用户区划编码</td></tr>"
				+ "<tr><td>SYS_AGCODE</td><td>当前用户区划单位编码</td></tr>"
				+ "<tr><td>SYS_USERID</td><td>当前用户ID</td></tr>"
				+ "<tr><td>SYS_ROLEID</td><td>当前用户角色ID</td></tr>"
				+ "<tr><td>SYS_ZQRCODE</td><td>当前用户债权人编码</td></tr>"
				+ "<tr><td>SYS_JRJGCODE</td><td>当前用户金融机构编码</td></tr>"
				+ "<tr><td>SYS_JGJGCODE</td><td>当前用户监管机构编码</td></tr>"
				+ "<tr><td>SYS_JGJGADCODE</td><td>当前用户监管机构区划编码</td></tr>"
				+ "</table>"
				+ "示例：SELECT GUID,CODE,NAME FROM DSY_V_ELE_AD WHERE CODE = '${SYS_ADCODE}'</br>"
				+ "报表组件权限参数如下：</br><table>"
				+ "<tr><td>SYS_RIGHT</td><td>权限参数</td></tr>"
				+ "</table>"
				+ "说明：如果拼接权限参数，则对应的SQL中必须包含AD_CODE、AG_CODE字段， </br>"
				+ "且拼接权限SQL的表（视图、SQL语句）别名必须为R，权限SQL中已使用别名H、R、U， </br>"
				+ "拼接权限SQL时请注意 </br>"
				+ "示例：SELECT * FROM DEBT_T_FACT_ZQZWYE R WHERE 1=1 ${SYS_RIGHT} </br>"
				+ "返回SQL示例：SELECT * FROM DEBT_T_FACT_ZQZWYE R WHERE 1=1  AND R.AD_CODE LIKE CONCAT(?,'%') </br>",
		closable : false,
		align : 't',
		padding : '1px',
		bodyStyle : 'padding:1px',
		border : false,
		autoCloseDelay: 5000,
		slideInDuration : 400,
		minWidth : 400
	});
}



/**
 * sql提示信息
 */
function sqlTip() {
	Ext.toast({
		html : "下拉树sql需要包含以下字段：</br><table>" + "<tr><td>GUID</td><td>数据唯一ID</td></tr>"
				+ "<tr><td>CODE</td><td>编码</td></tr>" + "<tr><td>NAME</td><td>名称</td></tr>"
				+ "<tr><td>SUPERGUID</td><td>父节点GUID</td></tr>" + "<tr><td>ISLEAF</td><td>是否子节点</td></tr>"
				+ "<tr><td>LEVELNO</td><td>级次</td></tr></table>"
				+ "示例：SELECT GUID,CODE,NAME,SUPERGUID ,ISLEAF, LEVELNO FROM DSY_V_ELE_AD </br>"
				+ "下拉框sql需要包含以下字段：</br><table>" + "<tr><td>GUID</td><td>数据唯一ID</td></tr>"
				+ "<tr><td>CODE</td><td>编码</td></tr>" + "<tr><td>NAME</td><td>名称</td></tr></table>"
				+ "示例：SELECT GUID,CODE,NAME FROM DSY_V_ELE_AD </br>",
		closable : false,
		align : 't',
		padding : '1px',
		bodyStyle : 'padding:1px',
		border : false,
		slideInDuration : 400,
		minWidth : 400
	});
}

function valueTip() {
	Ext.toast({
		html : "默认值如果为SQL则必须包含C_DATA_VALUE字段</br>" + "示例：SELECT C_SDATE C_DATA_VALUE FROM DSY_V_QUERYDEFAULT </br>",
		closable : false,
		align : 't',
		padding : '1px',
		bodyStyle : 'padding:1px',
		border : false,
		slideInDuration : 400,
		minWidth : 400
	});
}

function columnChild(childColumns, dataIndex) {
	for ( var i = 0; i < childColumns.length; i++) {
		if (childColumns[i].columns && childColumns[i].columns.length > 0) {
			arguments.callee(childColumns[i].columns, dataIndex);
		} else {
			if (childColumns[i].F_ID == dataIndex) {
				childColumns.splice(i, 1);
				break;
			}
		}
	}
}

function addCondition(record) {
	var code = record.get('code');
	var fieldtitle = record.get('title');
	var flag = true;
	var conditionPanel = Ext.ComponentQuery.query('form#condition')[0];
	conditionPanel.items.each(function(item, index, length) {
		var label = item.name;
		if (code == label) {
			alert("条件已存在");
			flag = false;
			return;
		}
	});
	if (flag) {
		var cid = GUID.createGUID();
		conditionList.push({
			C_ID : cid,
			C_CODE : code,
			SHOW_CODE : code,
			C_TITLE : fieldtitle
		});
		conditionPanel.add({
			xtype : 'combobox',
			fieldLabel : '<span ondblclick="shanchu(\'' + code + '\',\'combobox\',\'' + cid + '\');">' + fieldtitle
					+ '</span>',
			name : code,
			margin : '2 5 2 2',
			padding : '0 0 0 0',
			listeners : {
				render : function(self) {
	             	Ext.QuickTips.init();  
	             	Ext.QuickTips.register({  
	             		target : self.el,  
	             	    text : '双击标题删除'
	                });
	             	self.getEl().on('click', function(self){
	            		if(timer1){
	                		timer1 = false;
	                		task1 = new Ext.util.DelayedTask(function(){
	                			var rightConfig = Ext.ComponentQuery.query('panel#rightConfig')[0];
	        	        		rightConfig.removeAll(true);
	        	        		rightConfig.setTitle("查询条件配置");
	        	        		if(conditions[cid]){
	        	        			rightConfig.add(initConditonConfig({
	        	        				c_id:cid,
	                                    data: conditions[cid]
	                                }));
	        	        		}else{
	        	        			$.post("/sys-report/getConditonInfo", {
	        	        				c_id:cid,
	        	        				code:code
									}, function(jsondata) {
	        	                        var data = jsondata[0];
	        	                        if(mapIsEmpty(data)){
	        	                        	data={
	        	                        		C_ID:cid,
	        	                        		C_CODE:code,
	        	                        		C_TITLE: fieldtitle
	        	                        	};
	        	                        }
	        	                        conditions[cid] = data;
	        	                        rightConfig.add(initConditonConfig({
	        	                        	c_id:cid,
	        	                            data: conditions[cid],
	        	                            saveFlag:true
	        	                        }));
	        	                    }, "json");
	        	        		}
	                   		 timer1 = true;
	                    	});
	                		task1.delay(300);
	                	}
	            	});
				}
			}
		});
	}
}

function initWindow_report_print_config(config) {
	// 弹出弹出框
	Ext.create('Ext.window.Window', {
		title : config.title, // 窗口标题
		width : document.body.clientWidth * 0.65, // 窗口宽度
		height : document.body.clientHeight * 0.65, // 窗口高度
		layout : 'fit',
		maximizable : true,
		itemId : 'initWindow_report_print_config', // 窗口标识
		buttonAlign : 'right', // 按钮显示的位置
		modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
		closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是destroy，则会将window销毁。
		items : initWindow_report_print_contentForm(config),
		buttons : [ {
			xtype : 'button',
			text : '保存',
			handler : function(self) {
				var form = self.up('window').down('form');
				if (form.isValid()) {
					var formData = form.getForm().getFieldValues();
					formData = $.extend({}, formData, form.getValues());
					formData.Q_ID = config.data.Q_ID;
					$.post('/sys-report/saveReportPrintConfig', {
						detailForm : Ext.util.JSON.encode([ formData ])
					}, function(data) {
						if (data.success) {
							Ext.toast({
								html : "保存成功！",
								closable : false,
								align : 't',
								slideInDuration : 400,
								minWidth : 400
							});
							self.up('window').close();
						} else {
							Ext.MessageBox.alert('提示', '保存失败!' + data.message);
						}
					}, 'JSON');
				}
			}
		}, {
			xtype : 'button',
			text : '关闭',
			handler : function(self) {
				self.up('window').close();
			}
		} ]
	}).show();
}

function initWindow_report_print_contentForm(config) {
	var form = Ext.create('Ext.form.Panel', {
		width : '100%',
		height : '100%',
		itemId : 'initWindow_report_print_contentForm',
		layout : 'column',
		scrollable : true,
		defaultType : 'fieldset',
		defaults : {
			margin : '4 4 4 10',
			columnWidth :.99
		// height:document.body.clientHeight * 0.3
		},
		items : [ {
			title : '页眉',
			layout : 'column',
			defaultType : 'textareafield',
			defaults : {
				margin : '5 0 5 5',
				columnWidth : 0.33,
				height : document.body.clientHeight * 0.2,
				labelWidth : 35
			// 控件默认标签宽度
			},
			items : [ {
				fieldLabel : '左(L)',
				name : 'HEADER_LEFT'
			}, {
				fieldLabel : '中(C)',
				name : 'HEADER_CENTER'
			}, {
				fieldLabel : '右(R)',
				name : 'HEADER_RIGHT'
			} ]
		}, {
			title : '页脚',
			layout : 'column',
			defaultType : 'textareafield',
			defaults : {
				margin : '5 0 5 5',
				columnWidth : 0.33,
				height : document.body.clientHeight * 0.2,
				labelWidth : 35
			// 控件默认标签宽度
			},
			items : [ {
				fieldLabel : '左(L)',
				name : 'FOOTER_LEFT'
			}, {
				fieldLabel : '中(C)',
				name : 'FOOTER_CENTER'
			}, {
				fieldLabel : '右(R)',
				name : 'FOOTER_RIGHT'
			} ]
		} ]
	});
	form.getForm().setValues(config.data);
	return form;
}

function columnRightClick(dataIndex) {
	// configColumns.splice(fullColumnIndex+1, 0,moveColumn);
	var fieldTree = Ext.ComponentQuery.query('treepanel#fieldTree')[0];
	var fieldStore = fieldTree.getStore();
	var columnMenu = [];
	fieldStore.each(function(record) {
		var rightFlag = true;
		var field = record.get("code");
		$.each(fields, function(key, value) {
			if (field == value.FIELD_CODE) {
				rightFlag = false;
				return false;
			}
		})
		if (rightFlag) {
			columnMenu.push({
				text : record.get('title'),
				fieldCode : record.get("code"),
				fieldType : record.get("field_type"),
				// 增加菜单点击事件
				handler : function(self) {
					var addGuid = GUID.createGUID();
					var addColumn = {
						F_ID : addGuid,
						FIELD_TITLE : self.text,
						FIELD_CODE : self.fieldCode,
						FIELD_TYPE : self.fieldType,
						columns : new Array()
					};
					for ( var i = 0; i < configColumns.length; i++) {
						if (configColumns[i].F_ID == dataIndex) {
							configColumns.splice(i + 1, 0, addColumn);
							break;
						}
						if (!singleHeadFlag) {
							if (configColumns[i].columns && configColumns[i].columns.length > 0) {
								var addFlag = addChildColumn(configColumns[i].columns, addColumn, dataIndex);
							}
						}
					}
					fieldConfAndShowFiled(addGuid);
				}
			});
		}
	});
	var columnRightMenu = new Ext.menu.Menu({
		float : true,
		items : columnMenu
	});
	return columnRightMenu;
}

function refreshFieldTree() {
	var fieldTree = Ext.ComponentQuery.query('treepanel#fieldTree')[0];
	var fieldStore = fieldTree.getStore();
	fieldStore.getProxy().extraParams = {
		q_id : q_id
	};
	fieldStore.load();
}

function fieldConfAndShowFiled(addGuid) {
	fieldConf(configColumns, true, true);
	var reportGrid = DSYGrid.getGrid('reportGrid');
	var reportStroe = reportGrid.getStore();
	reportStroe.removeAll();
	reportStroe.insertData(0, showRecord);
	reportGrid.reconfigure(reportStroe, columns);
	Ext.resumeLayouts(true);
	var rightConfig = Ext.ComponentQuery.query('panel#rightConfig')[0];
	rightConfig.removeAll(true);
	rightConfig.setTitle("数据列配置");
	rightConfig.add(initFieldConfig({
		f_id : addGuid,
		data : fields[addGuid],
		saveFlag : true
	}));
}

function addChildColumn(childColumns, addColumn, dataIndex) {
	for ( var i = 0; i < childColumns.length; i++) {
		if (childColumns[i].F_ID == dataIndex) {
			childColumns.splice(i + 1, 0, addColumn);
			return;
		} else if (childColumns[i].columns && childColumns[i].columns.length > 0) {
			arguments.callee(childColumns[i].columns, addColumn, dataIndex);
		}
	}
}

function removeChildColumn(childColumns, dataIndex) {
	var resultMoveColumn = {};
	function removeChildColumn(childColumns, dataIndex) {
		for ( var i = 0; i < childColumns.length; i++) {
			if (childColumns[i].F_ID == dataIndex) {
				var moveColumn = childColumns[i];
				childColumns.splice(i, 1);
				resultMoveColumn = moveColumn;
				return;
			} else if (childColumns[i].columns && childColumns[i].columns.length > 0) {
				arguments.callee(childColumns[i].columns, dataIndex);
			}
		}
	}
	removeChildColumn(childColumns, dataIndex);
	return resultMoveColumn;
}


function resource() {
	// 弹出弹出框
	Ext.create('Ext.window.Window', {
		title : '数据资源', // 窗口标题
		width : document.body.clientWidth * 0.6, // 窗口宽度
		height : document.body.clientHeight * 0.6, // 窗口高度
		layout : 'fit',
		maximizable : true,
		buttonAlign : 'right', // 按钮显示的位置
		modal : true, // 模式窗口，弹出窗口后屏蔽掉其他组件
		closeAction : 'destroy',// hide:单击关闭图标后隐藏，可以调用show()显示。如果是destroy，则会将window销毁。
		items : initWindow_resource_content(),
		buttons : [{
			xtype : 'button',
			text : '关闭',
			handler : function(self) {
				self.up('window').close();
			}
		} ]
	}).show();
}

function initWindow_resource_content() {
	return Ext.create('Ext.panel.Panel', {
        layout: {
            type: 'vbox',
            align: 'stretch',
            flex: 1
        },
        height: '100%',
        border: true,
        bodyStyle: 'border-width:0 0 0 0;',// 设置panel边框有无，去掉上方边框
        items: [initResourceSearch(), initResourceGrid()]
    });

}

function initResourceSearch(){
	 return Ext.create('Ext.panel.Panel', {
	    	width:'100%',
		 	autoScroll: true,
		 	maxHeight : 150,//查询区显示4行
		 	minHeight : 0,
		 	layout:'column',
		    border: false,
		    frame: false,
		    defaults:{
		    	labelAlign: "right",
		        labelWidth: 100,
			    flex: 1,
		        margin:'5 5 0 5'
		     },
		   items: [{
			   	xtype:"textfield",
			    fieldLabel: '资源编码/名称',
			    name: 'RESOURCECONDITION',
			    emptyText:'请输入编码/名称',
			    columnWidth:.499,
			    enableKeyEvents: true,
	            listeners: {
	                'keydown': function (self, e, eOpts) {
	                    var key = e.getKey();
	                    if (key == Ext.EventObject.ENTER) {
	                    	reloadResourceGrid();
	                    }
	                }
	            }
	   		},{
	   			xtype: 'button',
	   			text: '查询',
	   			columnWidth:0.1,
	   			margin:'5 5 5 10',
	   			itemId: 'report_query_search',
	   			icon: '/report/image/sysbutton/search.png',
	   			handler: function (btn) {
	   				reloadResourceGrid();
	   			}
	   		}]
	    });
}

function initResourceGrid(){
	var headerJson = [{
		dataIndex : "RESOURCE_TYPE",
		type : "string",
		text : "资源类型",
		width : 230,
		cellWrap : true
	}, {
		dataIndex : "RESOURCE_CODE",
		type : "string",
		text : "资源编码",
		width : 250,
		cellWrap : true
	}, {
		dataIndex : "RESOURCE_NAME",
		type : "string",
		text : "资源名称",
		width : 250,
		cellWrap : true
	} ];
	var grid = DSYGrid.createGrid({
		itemId : 'resourceGrid',
		headerConfig : {
			headerJson : headerJson,
			columnAutoWidth : false
		},
		flex: 8,
		checkBox : false,
		border : false,
		autoLoad : true,
		height : '100%',
		dataUrl : '/sys-report/getQueryResource',
		pageConfig : {
			enablePage : false
		}
	});
	return grid;
}

function reloadResourceGrid(){
    var grid = DSYGrid.getGrid('resourceGrid');
    var store = grid.getStore();
    store.getProxy().extraParams["condition"] = Ext.ComponentQuery.query('textfield[name="RESOURCECONDITION"]')[0].getValue();
	store.load();
}
